viem
Version:
7,617 lines • 257 kB
TypeScript
import type { Address } from 'abitype';
import { Hex } from 'ox';
import { TokenId } from 'ox/tempo';
import type { Account } from '../../accounts/types.js';
import { type GetLogsErrorType } from '../../actions/public/getLogs.js';
import { type ReadContractReturnType } from '../../actions/public/readContract.js';
import { type SimulateContractReturnType } from '../../actions/public/simulateContract.js';
import * as internal_Token from '../../actions/token/internal.js';
import { type SendTransactionReturnType, sendTransaction } from '../../actions/wallet/sendTransaction.js';
import { sendTransactionSync } from '../../actions/wallet/sendTransactionSync.js';
import type { Client } from '../../clients/createClient.js';
import type { Transport } from '../../clients/transports/createTransport.js';
import type { BaseErrorType } from '../../errors/base.js';
import type { Chain } from '../../types/chain.js';
import type { Log } from '../../types/log.js';
import type { Compute, OneOf } from '../../types/utils.js';
import { type ObserveErrorType } from '../../utils/observe.js';
import { type PollErrorType } from '../../utils/poll.js';
import * as Abis from '../Abis.js';
import { type GetVaultEngineChangedErrorType, type WaitForPrivateDepositTimeoutErrorType, type WaitForPrivateRedeemTimeoutErrorType } from '../errors.js';
import type { GetAccountParameter, ReadParameters, WriteParameters, WriteSyncParameters } from '../internal/types.js';
import { type CallParameters } from '../internal/utils.js';
import type { TransactionReceipt } from '../Transaction.js';
import * as zoneActions from './zone.js';
export * from './earn/deployment.js';
/** TIP-403 policy ID that allows every sender, recipient, and mint recipient. */
export declare const alwaysAllowPolicyId = 1n;
/** Admission-only TIP-403 policy attached to an Earn share token. */
export type ExitSafePolicy = {
/** Compound policy attached to the Earn share token. */
transferPolicyId: bigint;
/** Sender policy. Must be {@link alwaysAllowPolicyId} so holders can exit. */
senderPolicyId: bigint;
/** Recipient eligibility policy. */
recipientPolicyId: bigint;
/** Mint-recipient eligibility policy. Must match `recipientPolicyId`. */
mintRecipientPolicyId: bigint;
};
/** Receipts produced while configuring an exit-safe Earn policy. */
export type ExitSafePolicyReceipts = {
/** Whitelist policy creation receipt. */
eligibilityPolicy: TransactionReceipt;
/** Compound policy creation receipt. */
compoundPolicy: TransactionReceipt;
/** Earn share token policy update receipt. */
tokenPolicy: TransactionReceipt;
/** Eligibility policy admin transfer receipt, when an administrator is provided. */
policyAdmin?: TransactionReceipt | undefined;
};
/**
* Creates and attaches an admission-only TIP-403 policy to an Earn share
* token. Existing holders remain able to send shares while recipients and mint
* recipients must belong to the same whitelist.
*
* The action submits three or four sequential transactions and is not atomic.
* Use {@link validateExitSafePolicy} to verify the final state.
*
* @example
* ```ts
* import { createClient, http } from 'viem'
* import { privateKeyToAccount } from 'viem/accounts'
* import { tempoModerato } from 'viem/chains'
* import { Actions } from 'viem/tempo'
*
* const account = privateKeyToAccount('0x...')
* const client = createClient({
* account,
* chain: tempoModerato,
* transport: http(),
* })
*
* const { policy, receipts } =
* await Actions.earn.configureExitSafePolicy(client, {
* accessAdministrator: '0x...',
* initialMembers: ['0x...', '0x...'],
* shareToken: '0x...',
* })
* ```
*
* @param client - Client authorized to change the Earn share token policy.
* @param parameters - Share token, administrator, and initial members.
* @returns The configured policy IDs and transaction receipts.
*/
export declare function configureExitSafePolicy<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: configureExitSafePolicy.Parameters<account>): Promise<configureExitSafePolicy.ReturnValue>;
export declare namespace configureExitSafePolicy {
type Args = {
/** Address that will administer recipient eligibility. */
accessAdministrator: Address;
/** Addresses initially eligible to receive or be minted Earn shares. */
initialMembers: readonly Address[];
/** Earn share token. */
shareToken: Address;
};
type Parameters<account extends Account | undefined = Account | undefined> = GetAccountParameter<account> & Args;
type ReturnValue = Compute<{
/** Configured onchain policy IDs. */
policy: ExitSafePolicy;
/** Receipts for each configuration transaction. */
receipts: ExitSafePolicyReceipts;
}>;
type ErrorType = BaseErrorType;
}
/**
* Verifies that an Earn share token uses the expected exit-safe TIP-403
* policy and that every required member can receive transfers and mints.
*
* @example
* ```ts
* import { createClient, http } from 'viem'
* import { tempoModerato } from 'viem/chains'
* import { Actions } from 'viem/tempo'
*
* const client = createClient({
* chain: tempoModerato,
* transport: http(),
* })
*
* await Actions.earn.validateExitSafePolicy(client, {
* accessAdministrator: '0x...',
* policy: {
* transferPolicyId: 3n,
* senderPolicyId: 1n,
* recipientPolicyId: 2n,
* mintRecipientPolicyId: 2n,
* },
* requiredMembers: ['0x...', '0x...'],
* shareToken: '0x...',
* })
* ```
*
* @param client - Client.
* @param parameters - Expected policy, administrator, and required members.
* @returns Nothing when the policy is valid.
*/
export declare function validateExitSafePolicy<chain extends Chain | undefined>(client: Client<Transport, chain>, parameters: validateExitSafePolicy.Parameters): Promise<validateExitSafePolicy.ReturnValue>;
export declare namespace validateExitSafePolicy {
type Args = {
/** Expected eligibility policy administrator. */
accessAdministrator: Address;
/** Expected exit-safe policy IDs. */
policy: ExitSafePolicy;
/** Addresses that must be eligible to receive or be minted Earn shares. */
requiredMembers: readonly Address[];
/** Earn share token. */
shareToken: Address;
};
type Parameters = Omit<ReadParameters, 'account'> & Args;
type ReturnValue = void;
type ErrorType = BaseErrorType;
}
/**
* Deposits assets into a vault and mints Earn shares to `recipient`. The
* transaction includes the required asset approval.
*
* @example
* ```ts
* import { createClient, http } from 'viem'
* import { privateKeyToAccount } from 'viem/accounts'
* import { tempoModerato } from 'viem/chains'
* import { Actions } from 'viem/tempo'
*
* const client = createClient({
* account: privateKeyToAccount('0x...'),
* chain: tempoModerato,
* transport: http(),
* })
*
* const hash = await Actions.earn.deposit(client, {
* assetAmount: 100_000_000n,
* shareAmount: 99_900_000n,
* slippageBps: 50,
* vault: '0x...',
* })
* ```
*
* @param client - Client.
* @param parameters - Parameters.
* @returns The transaction hash.
*/
export declare function deposit<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: deposit.Parameters<chain, account>): Promise<deposit.ReturnValue>;
export declare namespace deposit {
type Args = {
/** Assets to deposit; base units or `{ formatted, decimals? }` (asset decimals). */
assetAmount: internal_Token.AmountInput;
/** Earn share recipient. @default `account.address` */
recipient?: Address | undefined;
/** Vault address. */
vault: Address;
} & OneOf<{
/** Minimum Earn share output to accept; must be greater than zero. */
shareAmountMin: bigint;
} | {
/** Quoted Earn share output; floored by `slippageBps`. */
shareAmount: bigint;
/** Slippage tolerance in basis points under `shareAmount` (50 = 0.5%). */
slippageBps: number;
}>;
type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = WriteParameters<chain, account> & Args;
type ReturnValue = SendTransactionReturnType;
type ErrorType = BaseErrorType;
/** @internal Shared dispatch; reads the asset for the approval. */
function inner<action extends typeof sendTransaction | typeof sendTransactionSync, chain extends Chain | undefined, account extends Account | undefined>(action: action, client: Client<Transport, chain, account>, parameters: deposit.Parameters<chain, account>): Promise<ReturnType<action>>;
/**
* Defines a deposit call without an approval. Provide token decimals for
* formatted inputs and an explicit output bound because this builder performs no reads.
*
* @param parameters - Client (optional), followed by the call arguments.
* @returns The call.
*/
function call<chain extends Chain | undefined>(...parameters: CallParameters<call.Args, Client<Transport, chain>>): {
abi: [{
readonly type: "function";
readonly name: "deposit";
readonly inputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}, {
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "minEarnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}];
functionName: "deposit";
} & {
args: readonly [assets: bigint, receiver: `0x${string}`, bigint];
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
};
namespace call {
type Args = {
/** Assets to deposit; base units or `{ formatted, decimals? }` (asset decimals). */
assetAmount: internal_Token.AmountInput;
/** Earn share recipient. */
recipient: Address;
/** Vault address. */
vault: Address;
} & OneOf<{
/** Minimum Earn share output to accept. */
shareAmountMin: bigint;
} | {
/** Quoted Earn share output; floored by `slippageBps`. */
shareAmount: bigint;
/** Slippage tolerance in basis points under `shareAmount` (50 = 0.5%). */
slippageBps: number;
}>;
}
/**
* Defines the asset approval and deposit calls for atomic execution. Pass
* `assetToken` and token decimals explicitly because this builder performs no reads.
*
* @param args - Arguments.
* @returns The calls.
*/
function calls(args: call.Args & {
/** Asset token approved for the deposit. */
assetToken: TokenId.TokenIdOrAddress;
}): (({
abi: [{
readonly name: "approve";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "spender";
}, {
readonly type: "uint256";
readonly name: "amount";
}];
readonly outputs: readonly [{
readonly type: "bool";
}];
}];
functionName: "approve";
} & {
args: readonly [spender: `0x${string}`, amount: bigint];
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}) | ({
abi: [{
readonly type: "function";
readonly name: "deposit";
readonly inputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}, {
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "minEarnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}];
functionName: "deposit";
} & {
args: readonly [assets: bigint, receiver: `0x${string}`, bigint];
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}))[];
/**
* Extracts a `Deposited` event from the vault's logs.
*
* @param logs - Logs.
* @param parameters - Parameters.
* @returns The `Deposited` event.
*/
function extractEvent(logs: Log[], parameters: {
vault: Address;
}): Log<bigint, number, false, undefined, true, readonly [{
readonly type: "constructor";
readonly inputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "MAX_REWARD_RATE_MULTIPLIER";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "absorbEngineShareSurplus";
readonly inputs: readonly [{
readonly name: "engineShares_";
readonly type: "uint256";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "acceptDistributor";
readonly inputs: readonly [];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "accrueFees";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "feeAssets";
readonly type: "uint256";
}, {
readonly name: "feeEarnShares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "anchorEarnShares";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "anchorEngineShares";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "asset";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "asyncJanitor";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "cancelDistributorFeeUpdate";
readonly inputs: readonly [];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "cancelDistributorTransfer";
readonly inputs: readonly [];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "cancelRedeem";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
}, {
readonly name: "minReceiverEarnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "contribute";
readonly inputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "receivedEngineShares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "convertEngineSharesToEarnShares";
readonly inputs: readonly [{
readonly name: "engineShares_";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "convertToEngineShares";
readonly inputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "engineShares_";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "deposit";
readonly inputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}, {
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "minEarnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "depositVenueShares";
readonly inputs: readonly [{
readonly name: "venueShares";
readonly type: "uint256";
}, {
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "minEarnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "depositsPaused";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "bool";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "disableFees";
readonly inputs: readonly [];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "distributor";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "distributorFee";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "recipient";
readonly type: "address";
}, {
readonly name: "rateBps";
readonly type: "uint16";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "distributorUpdateDelay";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint40";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "earnFees";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "earnShare";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "emergencyGuardian";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "engine";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "engineMigrationMode";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint8";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "engineShares";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "executeDistributorFeeUpdate";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "feeConfigId";
readonly type: "uint64";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "finalizeRedeem";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
}, {
readonly name: "asset_";
readonly type: "address";
}, {
readonly name: "amount";
readonly type: "uint256";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "initialize";
readonly inputs: readonly [{
readonly name: "engine_";
readonly type: "address";
}, {
readonly name: "earnShare_";
readonly type: "address";
}, {
readonly name: "earnFees_";
readonly type: "address";
}, {
readonly name: "operator_";
readonly type: "address";
}, {
readonly name: "controlInit_";
readonly type: "tuple";
readonly components: readonly [{
readonly name: "emergencyGuardian";
readonly type: "address";
}, {
readonly name: "asyncJanitor";
readonly type: "address";
}, {
readonly name: "maxManagedAssets";
readonly type: "uint256";
}, {
readonly name: "migrationMode";
readonly type: "uint8";
}];
}, {
readonly name: "distributorInit_";
readonly type: "tuple";
readonly components: readonly [{
readonly name: "distributor";
readonly type: "address";
}, {
readonly name: "updateDelay";
readonly type: "uint40";
}];
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "isAccountingAligned";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "bool";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "isFeeValuationFresh";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "bool";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "maxManagedAssets";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "migrateEngine";
readonly inputs: readonly [{
readonly name: "newEngine";
readonly type: "address";
}, {
readonly name: "minNewEngineShares";
readonly type: "uint256";
}, {
readonly name: "minAssetsRetained";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "newEngineShares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "normalizedRewardRate";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "openRedeemRequestCount";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "operator";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "pendingDistributor";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "pendingDistributorFeeUpdate";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "tuple";
readonly components: readonly [{
readonly name: "recipient";
readonly type: "address";
}, {
readonly name: "rateBps";
readonly type: "uint16";
}, {
readonly name: "executableAt";
readonly type: "uint40";
}, {
readonly name: "pending";
readonly type: "bool";
}];
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "pendingRedeem";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
}];
readonly outputs: readonly [{
readonly name: "";
readonly type: "tuple";
readonly components: readonly [{
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "requester";
readonly type: "address";
}, {
readonly name: "burnedEarnShares";
readonly type: "uint256";
}, {
readonly name: "engineShares";
readonly type: "uint256";
}, {
readonly name: "open";
readonly type: "bool";
}];
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "previewRedeem";
readonly inputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "previewWithdraw";
readonly inputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "rawEngineShares";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "redeem";
readonly inputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}, {
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "minAssets";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "remainingDepositCapacity";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "requestRedeem";
readonly inputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}, {
readonly name: "engineData";
readonly type: "bytes";
}, {
readonly name: "receiver";
readonly type: "address";
}];
readonly outputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "rewardRateBaseline";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "scheduleDistributorFeeUpdate";
readonly inputs: readonly [{
readonly name: "recipient";
readonly type: "address";
}, {
readonly name: "rateBps";
readonly type: "uint16";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setDepositsPaused";
readonly inputs: readonly [{
readonly name: "paused";
readonly type: "bool";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setEmergencyRoles";
readonly inputs: readonly [{
readonly name: "newGuardian";
readonly type: "address";
}, {
readonly name: "newJanitor";
readonly type: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setFeeConfig";
readonly inputs: readonly [{
readonly name: "config";
readonly type: "tuple";
readonly components: readonly [{
readonly name: "fixedFeeCount";
readonly type: "uint8";
}, {
readonly name: "fixedFees";
readonly type: "tuple[4]";
readonly components: readonly [{
readonly name: "account";
readonly type: "address";
}, {
readonly name: "rateBps";
readonly type: "uint16";
}];
}, {
readonly name: "excess";
readonly type: "tuple";
readonly components: readonly [{
readonly name: "enabled";
readonly type: "bool";
}, {
readonly name: "account";
readonly type: "address";
}, {
readonly name: "annualTargetRateBps";
readonly type: "uint16";
}, {
readonly name: "excessFeeRateBps";
readonly type: "uint16";
}];
}];
}];
readonly outputs: readonly [{
readonly name: "configId";
readonly type: "uint64";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setMaxManagedAssets";
readonly inputs: readonly [{
readonly name: "newMaxManagedAssets";
readonly type: "uint256";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "surplusEngineShares";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "totalAssets";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "totalEarnShares";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "transferDistributor";
readonly inputs: readonly [{
readonly name: "newDistributor";
readonly type: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "withdrawExact";
readonly inputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}, {
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "maxEarnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnSharesBurned";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "event";
readonly name: "Contributed";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "assets";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "engineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "anchorEngineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "anchorEarnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DepositPauseChanged";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "paused";
readonly type: "bool";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "Deposited";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "assets";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "earnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DistributorFeeUpdateCancelled";
readonly inputs: readonly [{
readonly name: "distributor";
readonly type: "address";
readonly indexed: true;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DistributorFeeUpdateScheduled";
readonly inputs: readonly [{
readonly name: "distributor";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "recipient";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "rateBps";
readonly type: "uint16";
readonly indexed: false;
}, {
readonly name: "executableAt";
readonly type: "uint40";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DistributorFeeUpdated";
readonly inputs: readonly [{
readonly name: "recipient";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "rateBps";
readonly type: "uint16";
readonly indexed: false;
}, {
readonly name: "feeConfigId";
readonly type: "uint64";
readonly indexed: true;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DistributorTransferCancelled";
readonly inputs: readonly [{
readonly name: "distributor";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "pendingDistributor";
readonly type: "address";
readonly indexed: true;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DistributorTransferStarted";
readonly inputs: readonly [{
readonly name: "distributor";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "pendingDistributor";
readonly type: "address";
readonly indexed: true;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DistributorTransferred";
readonly inputs: readonly [{
readonly name: "previousDistributor";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "newDistributor";
readonly type: "address";
readonly indexed: true;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "EmergencyRolesChanged";
readonly inputs: readonly [{
readonly name: "emergencyGuardian";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "asyncJanitor";
readonly type: "address";
readonly indexed: true;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "EngineMigrated";
readonly inputs: readonly [{
readonly name: "oldEngine";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "newEngine";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "oldEngineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "assetsMoved";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "newEngineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "totalEarnShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "anchorEngineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "anchorEarnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "EngineShareSurplusAbsorbed";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "engineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "anchorEngineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "anchorEarnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "MaxManagedAssetsChanged";
readonly inputs: readonly [{
readonly name: "previousMaxManagedAssets";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "newMaxManagedAssets";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "RedeemCancelled";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "earnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "RedeemFinalized";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "earnShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "asset";
readonly type: "address";
readonly indexed: false;
}, {
readonly name: "assets";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "RedeemRequested";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
readonly indexed: true;
}, {
readonly name: "requester";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "earnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "Redeemed";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "earnShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "assets";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "VenueSharesDeposited";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "requestedVenueShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "receivedEngineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "earnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "WithdrewExact";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "assets";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "earnSharesBurned";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "error";
readonly name: "ActiveSupplyWithoutBacking";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "AlreadyInitialized";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "DepositsPaused";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "DistributorFeeUpdateNotPending";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "DistributorFeeUpdateNotReady";
readonly inputs: readonly [{
readonly name: "executableAt";
readonly type: "uint40";
}];
}, {
readonly type: "error";
readonly name: "DistributorTransferNotPending";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "DuplicateRequest";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
}];
}, {
readonly type: "error";
readonly name: "EngineAssetMismatch";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "EngineCapabilityUnsupported";
readonly inputs: readonly [{
readonly name: "interfaceId";
readonly type: "bytes4";
}];
}, {
readonly type: "error";
readonly name: "EngineEarnVaultMismatch";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "EngineExitUnsupported";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ExceedsMaxEarnShares";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ExcessiveConversionLoss";
readonly inputs: readonly [{
readonly name: "inputShares";
readonly type: "uint256";
}, {
readonly name: "representedShares";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "ExcessiveMigrationClassificationError";
readonly inputs: readonly [{
readonly name: "expectedManagedAssets";
readonly type: "uint256";
}, {
readonly name: "actualManagedAssets";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "FeeValuationStale";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "FinalizedAssetMismatch";
readonly inputs: readonly [{
readonly name: "finalizedAsset";
readonly type: "address";
}];
}, {
readonly type: "error";
readonly name: "GlobalFeeDisableUnavailable";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "InitialEarnShareSupplyNotZero";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "InsufficientEngineShareSurplus";
readonly inputs: readonly [{
readonly name: "available";
readonly type: "uint256";
}, {
readonly name: "requested";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "InsufficientOutput";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "InvalidDistributorConfiguration";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "InvalidDistributorFeeConfiguration";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "InvalidEarnDecimals";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "InvalidEngineShareScale";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "MaxManagedAssetsExceeded";
readonly inputs: readonly [{
readonly name: "maximum";
readonly type: "uint256";
}, {
readonly name: "actual";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "MinimumAssetsNotMet";
readonly inputs: readonly [{
readonly name: "minimumAssets";
readonly type: "uint256";
}, {
readonly name: "actualAssets";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "MinimumEarnSharesNotMet";
readonly inputs: readonly [{
readonly name: "minimumEarnShares";
readonly type: "uint256";
}, {
readonly name: "actualEarnShares";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "MinimumEngineSharesNotMet";
readonly inputs: readonly [{
readonly name: "minimumEngineShares";
readonly type: "uint256";
}, {
readonly name: "actualEngineShares";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "NoEarnShares";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotDistributor";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotEmergencyGuardianOrOperator";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotEngine";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotOperator";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotPendingDistributor";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotRequesterOrJanitor";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "OperatorMigrationDisabled";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "PendingRedeemsOpen";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ReentrantCall";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "RequestNotOpen";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
}];
}, {
readonly type: "error";
readonly name: "ResidualBacking";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "RewardRateLimitExceeded";
readonly inputs: readonly [{
readonly name: "normalizedRate";
readonly type: "uint256";
}, {
readonly name: "baselineRate";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "SameEngine";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "TokenCallFailed";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "TokenCallFalse";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ZeroAddress";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ZeroAmount";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ZeroMinimumAssets";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ZeroMinimumEarnShares";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ZeroMinimumEngineShares";
readonly inputs: readonly [];
}], "Deposited">;
/**
* Estimates gas for a deposit, assuming the vault has enough asset allowance.
*
* @param client - Client.
* @param parameters - Parameters.
* @returns The gas estimate.
*/
function estimateGas<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: deposit.Parameters<chain, account>): Promise<bigint>;
/**
* Simulates a deposit, assuming the vault has enough asset allowance.
*
* @param client - Client.
* @param parameters - Parameters.
* @returns The simulation result and write request.
*/
function simulate<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: deposit.Parameters<chain, account>): Promise<SimulateContractReturnType<typeof Abis.earnVault, 'deposit'>>;
}
/**
* Deposits assets and returns the confirmed receipt and event data.
*
* @example
* ```ts
* import { createClient, http } from 'viem'
* import { privateKeyToAccount } from 'viem/accounts'
* import { tempoModerato } from 'viem/chains'
* import { Actions, EarnShares } from 'viem/tempo'
*
* const client = createClient({
* account: privateKeyToAccount('0x...'),
* chain: tempoModerato,
* transport: http(),
* })
*
* const { shareAmount } = await Actions.earn.depositSync(client, {
* assetAmount: 100_000_000n,
* shareAmountMin: EarnShares.minimumOutput(99_900_000n, 50),
* vault: '0x...',
* })
* ```
*
* @param client - Client.
* @param parameters - Parameters.
* @returns The transaction receipt and event data.
*/
export declare function depositSync<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: depositSync.Parameters<chain, account>): Promise<depositSync.ReturnValue>;
export declare namespace depositSync {
type Args = deposit.Args;
type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = deposit.Parameters<chain, account> & WriteSyncParameters<chain, account>;
type ReturnValue = Compute<{
/** Assets deposited. */
assetAmount: bigint;
/** Depositing caller. */
caller: Address;
/** Transaction receipt. */
receipt: TransactionReceipt;
/** Earn share recipient. */
recipient: Address;
/** Earn shares minted. */
shareAmount: bigint;
}>;
type ErrorType = BaseErrorType;
}
/**
* Deposits venue shares into a vault and mints Earn shares to `recipient`.
* The transaction includes the required venue share approval.
*
* @example
* ```ts
* import { createClient, http } from 'viem'
* import { privateKeyToAccount } from 'viem/accounts'
* import { tempoModerato } from 'viem/chains'
* import { Actions } from 'viem/tempo'
*
* const client = createClient({
* account: privateKeyToAccount('0x...'),
* chain: tempoModerato,
* transport: http(),
* })
*
* const hash = await Actions.earn.depositShares(client, {
* earnShareAmount: 499_000_000n,
* slippageBps: 30,
* vault: '0x...',
* venueShareAmount: 500_000_000n,
* venueShareToken: '0x...',
* })
* ```
*
* @param client - Client.
* @param parameters - Parameters.
* @returns The transaction hash.
*/
export declare function depositShares<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: depositShares.Parameters<chain, account>): Promise<depositShares.ReturnValue>;
export declare namespace depositShares {
type Args = {
/** Venue shares to deposit, base units. */
venueShareAmount: bigint;
/** Earn share recipient. @default `account.address` */
recipient?: Address | undefined;
/** Vault address. */
vault: Address;
/** Venue share token approved for the deposit. */
venueShareToken: Address;
} & OneOf<{
/** Minimum Earn share output to accept; must be greater than zero. */
earnShareAmountMin: bigint;
} | {
/** Quoted Earn share output; floored by `slippageBps`. */
earnShareAmount: bigint;
/** Slippage tolerance in basis points under `earnShareAmount` (50 = 0.5%). */
slippageBps: number;
}>;
type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = WriteParameters<chain, account> & Args;
type ReturnValue = SendTransactionReturnType;
type ErrorType = BaseErrorType;
/** @internal Shared dispatch; reads the engine for the approval. */
function inner<action extends typeof sendTransaction | typeof sendTransactionSync, chain extends Chain | undefined, account extends Account | undefined>(action: action, client: Client<Transport, chain, account>, parameters: depositShares.Parameters<chain, account>): Promise<ReturnType<action>>;
/**
* Defines a venue share deposit call without an approval. Provide an
* explicit output bound because this builder performs no reads.
*
* @param parameters - Client (optional), followed by the call arguments.
* @returns The call.
*/
function call<chain extends Chain | undefined>(...parameters: CallParameters<call.Args, Client<Transport, chain>>): {
abi: [{
readonly type: "function";
readonly name: "depositVenueShares";
readonly inputs: readonly [{
readonly name: "venueShares";
readonly type: "uint256";
}, {
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "minEarnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}];
functionName: "depositVenueShares";
} & {
args: readonly [bigint, receiver: `0x${string}`, bigint];
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
};
namespace call {
type Args = {
/** Venue shares to deposit, base units. */
venueShareAmount: bigint;
/** Earn share recipient. */
recipient: Address;
/** Vault address. */
vault: Address;
} & OneOf<{
/** Minimum Earn share output to accept. */
earnShareAmountMin: bigint;
} | {
/** Quoted Earn share output; floored by `slippageBps`. */
earnShareAmount: bigint;
/** Slippage tolerance in basis points under `earnShareAmount` (50 = 0.5%). */
slippageBps: number;
}>;
}
/**
* Defines the venue share approval and deposit calls for atomic execution.
* Pass the vault's current `engine` and `venueShareToken` explicitly.
*
* @param args - Arguments.
* @returns The calls.
*/
function calls(args: call.Args & {
/** Current vault engine that pulls the venue shares. */
engine: Address;
/** Venue share token pulled by the engine. */
venueShareToken: Address;
}): (({
abi: [{
readonly name: "approve";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "spender";
}, {
readonly type: "uint256";
readonly name: "amount";
}];
readonly outputs: readonly [{
readonly type: "bool";
}];
}];
functionName: "approve";
} & {
args: readonly [spender: `0x${string}`, amount: bigint];
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}) | ({
abi: [{
readonly type: "function";
readonly name: "depositVenueShares";
readonly inputs: readonly [{
readonly name: "venueShares";
readonly type: "uint256";
}, {
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "minEarnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}];
functionName: "depositVenueShares";
} & {
args: readonly [bigint, receiver: `0x${string}`, bigint];
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}))[];
/**
* Extracts a `VenueSharesDeposited` event from the vault's logs.
*
* @param logs - Logs.
* @param parameters - Parameters.
* @returns The `VenueSharesDeposited` event.
*/
function extractEvent(logs: Log[], parameters: {
vault: Address;
}): Log<bigint, number, false, undefined, true, readonly [{
readonly type: "constructor";
readonly inputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "MAX_REWARD_RATE_MULTIPLIER";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "absorbEngineShareSurplus";
readonly inputs: readonly [{
readonly name: "engineShares_";
readonly type: "uint256";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "acceptDistributor";
readonly inputs: readonly [];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "accrueFees";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "feeAssets";
readonly type: "uint256";
}, {
readonly name: "feeEarnShares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "anchorEarnShares";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "anchorEngineShares";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "asset";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "asyncJanitor";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "cancelDistributorFeeUpdate";
readonly inputs: readonly [];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "cancelDistributorTransfer";
readonly inputs: readonly [];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "cancelRedeem";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
}, {
readonly name: "minReceiverEarnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "contribute";
readonly inputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "receivedEngineShares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "convertEngineSharesToEarnShares";
readonly inputs: readonly [{
readonly name: "engineShares_";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "convertToEngineShares";
readonly inputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "engineShares_";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "deposit";
readonly inputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}, {
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "minEarnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "depositVenueShares";
readonly inputs: readonly [{
readonly name: "venueShares";
readonly type: "uint256";
}, {
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "minEarnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "depositsPaused";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "bool";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "disableFees";
readonly inputs: readonly [];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "distributor";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "distributorFee";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "recipient";
readonly type: "address";
}, {
readonly name: "rateBps";
readonly type: "uint16";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "distributorUpdateDelay";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint40";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "earnFees";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "earnShare";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "emergencyGuardian";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "engine";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "engineMigrationMode";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint8";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "engineShares";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "executeDistributorFeeUpdate";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "feeConfigId";
readonly type: "uint64";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "finalizeRedeem";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
}, {
readonly name: "asset_";
readonly type: "address";
}, {
readonly name: "amount";
readonly type: "uint256";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "initialize";
readonly inputs: readonly [{
readonly name: "engine_";
readonly type: "address";
}, {
readonly name: "earnShare_";
readonly type: "address";
}, {
readonly name: "earnFees_";
readonly type: "address";
}, {
readonly name: "operator_";
readonly type: "address";
}, {
readonly name: "controlInit_";
readonly type: "tuple";
readonly components: readonly [{
readonly name: "emergencyGuardian";
readonly type: "address";
}, {
readonly name: "asyncJanitor";
readonly type: "address";
}, {
readonly name: "maxManagedAssets";
readonly type: "uint256";
}, {
readonly name: "migrationMode";
readonly type: "uint8";
}];
}, {
readonly name: "distributorInit_";
readonly type: "tuple";
readonly components: readonly [{
readonly name: "distributor";
readonly type: "address";
}, {
readonly name: "updateDelay";
readonly type: "uint40";
}];
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "isAccountingAligned";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "bool";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "isFeeValuationFresh";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "bool";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "maxManagedAssets";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "migrateEngine";
readonly inputs: readonly [{
readonly name: "newEngine";
readonly type: "address";
}, {
readonly name: "minNewEngineShares";
readonly type: "uint256";
}, {
readonly name: "minAssetsRetained";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "newEngineShares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "normalizedRewardRate";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "openRedeemRequestCount";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "operator";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "pendingDistributor";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "pendingDistributorFeeUpdate";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "tuple";
readonly components: readonly [{
readonly name: "recipient";
readonly type: "address";
}, {
readonly name: "rateBps";
readonly type: "uint16";
}, {
readonly name: "executableAt";
readonly type: "uint40";
}, {
readonly name: "pending";
readonly type: "bool";
}];
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "pendingRedeem";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
}];
readonly outputs: readonly [{
readonly name: "";
readonly type: "tuple";
readonly components: readonly [{
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "requester";
readonly type: "address";
}, {
readonly name: "burnedEarnShares";
readonly type: "uint256";
}, {
readonly name: "engineShares";
readonly type: "uint256";
}, {
readonly name: "open";
readonly type: "bool";
}];
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "previewRedeem";
readonly inputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "previewWithdraw";
readonly inputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "rawEngineShares";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "redeem";
readonly inputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}, {
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "minAssets";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "remainingDepositCapacity";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "requestRedeem";
readonly inputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}, {
readonly name: "engineData";
readonly type: "bytes";
}, {
readonly name: "receiver";
readonly type: "address";
}];
readonly outputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "rewardRateBaseline";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "scheduleDistributorFeeUpdate";
readonly inputs: readonly [{
readonly name: "recipient";
readonly type: "address";
}, {
readonly name: "rateBps";
readonly type: "uint16";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setDepositsPaused";
readonly inputs: readonly [{
readonly name: "paused";
readonly type: "bool";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setEmergencyRoles";
readonly inputs: readonly [{
readonly name: "newGuardian";
readonly type: "address";
}, {
readonly name: "newJanitor";
readonly type: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setFeeConfig";
readonly inputs: readonly [{
readonly name: "config";
readonly type: "tuple";
readonly components: readonly [{
readonly name: "fixedFeeCount";
readonly type: "uint8";
}, {
readonly name: "fixedFees";
readonly type: "tuple[4]";
readonly components: readonly [{
readonly name: "account";
readonly type: "address";
}, {
readonly name: "rateBps";
readonly type: "uint16";
}];
}, {
readonly name: "excess";
readonly type: "tuple";
readonly components: readonly [{
readonly name: "enabled";
readonly type: "bool";
}, {
readonly name: "account";
readonly type: "address";
}, {
readonly name: "annualTargetRateBps";
readonly type: "uint16";
}, {
readonly name: "excessFeeRateBps";
readonly type: "uint16";
}];
}];
}];
readonly outputs: readonly [{
readonly name: "configId";
readonly type: "uint64";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setMaxManagedAssets";
readonly inputs: readonly [{
readonly name: "newMaxManagedAssets";
readonly type: "uint256";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "surplusEngineShares";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "totalAssets";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "totalEarnShares";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "transferDistributor";
readonly inputs: readonly [{
readonly name: "newDistributor";
readonly type: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "withdrawExact";
readonly inputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}, {
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "maxEarnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnSharesBurned";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "event";
readonly name: "Contributed";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "assets";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "engineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "anchorEngineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "anchorEarnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DepositPauseChanged";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "paused";
readonly type: "bool";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "Deposited";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "assets";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "earnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DistributorFeeUpdateCancelled";
readonly inputs: readonly [{
readonly name: "distributor";
readonly type: "address";
readonly indexed: true;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DistributorFeeUpdateScheduled";
readonly inputs: readonly [{
readonly name: "distributor";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "recipient";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "rateBps";
readonly type: "uint16";
readonly indexed: false;
}, {
readonly name: "executableAt";
readonly type: "uint40";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DistributorFeeUpdated";
readonly inputs: readonly [{
readonly name: "recipient";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "rateBps";
readonly type: "uint16";
readonly indexed: false;
}, {
readonly name: "feeConfigId";
readonly type: "uint64";
readonly indexed: true;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DistributorTransferCancelled";
readonly inputs: readonly [{
readonly name: "distributor";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "pendingDistributor";
readonly type: "address";
readonly indexed: true;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DistributorTransferStarted";
readonly inputs: readonly [{
readonly name: "distributor";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "pendingDistributor";
readonly type: "address";
readonly indexed: true;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DistributorTransferred";
readonly inputs: readonly [{
readonly name: "previousDistributor";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "newDistributor";
readonly type: "address";
readonly indexed: true;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "EmergencyRolesChanged";
readonly inputs: readonly [{
readonly name: "emergencyGuardian";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "asyncJanitor";
readonly type: "address";
readonly indexed: true;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "EngineMigrated";
readonly inputs: readonly [{
readonly name: "oldEngine";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "newEngine";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "oldEngineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "assetsMoved";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "newEngineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "totalEarnShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "anchorEngineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "anchorEarnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "EngineShareSurplusAbsorbed";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "engineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "anchorEngineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "anchorEarnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "MaxManagedAssetsChanged";
readonly inputs: readonly [{
readonly name: "previousMaxManagedAssets";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "newMaxManagedAssets";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "RedeemCancelled";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "earnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "RedeemFinalized";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "earnShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "asset";
readonly type: "address";
readonly indexed: false;
}, {
readonly name: "assets";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "RedeemRequested";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
readonly indexed: true;
}, {
readonly name: "requester";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "earnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "Redeemed";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "earnShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "assets";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "VenueSharesDeposited";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "requestedVenueShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "receivedEngineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "earnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "WithdrewExact";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "assets";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "earnSharesBurned";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "error";
readonly name: "ActiveSupplyWithoutBacking";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "AlreadyInitialized";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "DepositsPaused";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "DistributorFeeUpdateNotPending";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "DistributorFeeUpdateNotReady";
readonly inputs: readonly [{
readonly name: "executableAt";
readonly type: "uint40";
}];
}, {
readonly type: "error";
readonly name: "DistributorTransferNotPending";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "DuplicateRequest";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
}];
}, {
readonly type: "error";
readonly name: "EngineAssetMismatch";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "EngineCapabilityUnsupported";
readonly inputs: readonly [{
readonly name: "interfaceId";
readonly type: "bytes4";
}];
}, {
readonly type: "error";
readonly name: "EngineEarnVaultMismatch";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "EngineExitUnsupported";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ExceedsMaxEarnShares";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ExcessiveConversionLoss";
readonly inputs: readonly [{
readonly name: "inputShares";
readonly type: "uint256";
}, {
readonly name: "representedShares";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "ExcessiveMigrationClassificationError";
readonly inputs: readonly [{
readonly name: "expectedManagedAssets";
readonly type: "uint256";
}, {
readonly name: "actualManagedAssets";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "FeeValuationStale";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "FinalizedAssetMismatch";
readonly inputs: readonly [{
readonly name: "finalizedAsset";
readonly type: "address";
}];
}, {
readonly type: "error";
readonly name: "GlobalFeeDisableUnavailable";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "InitialEarnShareSupplyNotZero";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "InsufficientEngineShareSurplus";
readonly inputs: readonly [{
readonly name: "available";
readonly type: "uint256";
}, {
readonly name: "requested";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "InsufficientOutput";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "InvalidDistributorConfiguration";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "InvalidDistributorFeeConfiguration";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "InvalidEarnDecimals";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "InvalidEngineShareScale";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "MaxManagedAssetsExceeded";
readonly inputs: readonly [{
readonly name: "maximum";
readonly type: "uint256";
}, {
readonly name: "actual";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "MinimumAssetsNotMet";
readonly inputs: readonly [{
readonly name: "minimumAssets";
readonly type: "uint256";
}, {
readonly name: "actualAssets";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "MinimumEarnSharesNotMet";
readonly inputs: readonly [{
readonly name: "minimumEarnShares";
readonly type: "uint256";
}, {
readonly name: "actualEarnShares";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "MinimumEngineSharesNotMet";
readonly inputs: readonly [{
readonly name: "minimumEngineShares";
readonly type: "uint256";
}, {
readonly name: "actualEngineShares";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "NoEarnShares";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotDistributor";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotEmergencyGuardianOrOperator";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotEngine";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotOperator";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotPendingDistributor";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotRequesterOrJanitor";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "OperatorMigrationDisabled";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "PendingRedeemsOpen";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ReentrantCall";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "RequestNotOpen";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
}];
}, {
readonly type: "error";
readonly name: "ResidualBacking";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "RewardRateLimitExceeded";
readonly inputs: readonly [{
readonly name: "normalizedRate";
readonly type: "uint256";
}, {
readonly name: "baselineRate";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "SameEngine";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "TokenCallFailed";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "TokenCallFalse";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ZeroAddress";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ZeroAmount";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ZeroMinimumAssets";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ZeroMinimumEarnShares";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ZeroMinimumEngineShares";
readonly inputs: readonly [];
}], "VenueSharesDeposited">;
/**
* Estimates gas for a venue share deposit, assuming enough allowance.
*
* @param client - Client.
* @param parameters - Parameters.
* @returns The gas estimate.
*/
function estimateGas<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: depositShares.Parameters<chain, account>): Promise<bigint>;
/**
* Simulates a venue share deposit, assuming enough allowance.
*
* @param client - Client.
* @param parameters - Parameters.
* @returns The simulation result and write request.
*/
function simulate<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: depositShares.Parameters<chain, account>): Promise<SimulateContractReturnType<typeof Abis.earnVault, 'depositVenueShares'>>;
}
/**
* Deposits venue shares and returns the confirmed receipt and event data.
*
* @example
* ```ts
* import { createClient, http } from 'viem'
* import { privateKeyToAccount } from 'viem/accounts'
* import { tempoModerato } from 'viem/chains'
* import { Actions, EarnShares } from 'viem/tempo'
*
* const client = createClient({
* account: privateKeyToAccount('0x...'),
* chain: tempoModerato,
* transport: http(),
* })
*
* const { earnShareAmount } = await Actions.earn.depositSharesSync(client, {
* earnShareAmount: 499_000_000n,
* slippageBps: 30,
* vault: '0x...',
* venueShareAmount: 500_000_000n,
* venueShareToken: '0x...',
* })
* ```
*
* @param client - Client.
* @param parameters - Parameters.
* @returns The transaction receipt and event data.
*/
export declare function depositSharesSync<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: depositSharesSync.Parameters<chain, account>): Promise<depositSharesSync.ReturnValue>;
export declare namespace depositSharesSync {
type Args = depositShares.Args;
type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = depositShares.Parameters<chain, account> & WriteSyncParameters<chain, account>;
type ReturnValue = Compute<{
/** Depositing caller. */
caller: Address;
/** Earn shares minted. */
earnShareAmount: bigint;
/** Transaction receipt. */
receipt: TransactionReceipt;
/** Venue shares measured as received by the engine. */
receivedVenueShareAmount: bigint;
/** Earn share recipient. */
recipient: Address;
/** Venue shares requested for pull. */
venueShareAmount: bigint;
}>;
type ErrorType = BaseErrorType;
}
/**
* Withdraws assets from a Zone and deposits them into a vault on the parent
* chain. Use {@link privateDeposit.prepare} to build the encrypted callback.
*
* @example
* ```ts
* const prepared = await Actions.earn.privateDeposit.prepare(parentClient, {
* assetAmount: 100_000_000n,
* assetToken: '0x...',
* gateway: '0x...',
* recipient: '0x...',
* shareAmountMin: 99_500_000n,
* tempoRefundRecipient: '0x...',
* vault: '0x...',
* vaultAssetAmountMin: 99_000_000n,
* zoneId: 7,
* })
* const hash = await Actions.earn.privateDeposit(zoneClient, prepared)
* ```
*
* @param client - Zone client.
* @param parameters - Prepared deposit and transaction parameters.
* @returns The transaction hash.
*/
export declare function privateDeposit<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: privateDeposit.Parameters<chain, account>): Promise<privateDeposit.ReturnValue>;
export declare namespace privateDeposit {
type Args = prepare.ReturnValue;
type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = WriteParameters<chain, account> & Args;
type ReturnValue = SendTransactionReturnType;
type ErrorType = zoneActions.requestWithdrawal.ErrorType;
/**
* Builds an encrypted Zone withdrawal that deposits into the selected vault
* and returns the resulting shares to the Zone.
*
* @param client - Parent-chain client.
* @param parameters - Deposit intent and recovery parameters.
* @returns The prepared withdrawal and correlation data.
*/
function prepare<chain extends Chain | undefined>(client: Client<Transport, chain>, parameters: prepare.Parameters): Promise<prepare.ReturnValue>;
namespace prepare {
type Parameters = Omit<ReadParameters, 'account'> & Args;
type Args = PrivatePreparationParameters & {
/** Assets withdrawn from the Zone, base units. */
assetAmount: bigint;
/** Private asset withdrawn from the Zone. @default gateway private asset */
assetToken?: Address | undefined;
/** Minimum vault assets accepted after conversion. @default `assetAmount` */
vaultAssetAmountMin?: bigint | undefined;
} & MinimumShareAmountParameters;
type ReturnValue = PreparedZoneRequest;
type ErrorType = BaseErrorType;
}
/**
* Defines the approval and Zone withdrawal calls for a prepared deposit.
*
* @param args - Prepared deposit arguments.
* @returns The Zone withdrawal calls.
*/
function calls(args: Args): (({
abi: [{
readonly name: "approve";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "spender";
}, {
readonly type: "uint256";
readonly name: "amount";
}];
readonly outputs: readonly [{
readonly type: "bool";
}];
}];
functionName: "approve";
} & {
args: readonly [spender: `0x${string}`, amount: bigint];
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}) | ({
abi: [{
readonly name: "requestWithdrawal";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "token";
}, {
readonly type: "address";
readonly name: "to";
}, {
readonly type: "uint128";
readonly name: "amount";
}, {
readonly type: "bytes32";
readonly name: "memo";
}, {
readonly type: "uint64";
readonly name: "gasLimit";
}, {
readonly type: "address";
readonly name: "zoneFallbackRecipient";
}, {
readonly type: "bytes";
readonly name: "data";
}, {
readonly type: "bytes";
readonly name: "revealTo";
}];
readonly outputs: readonly [];
}];
functionName: "requestWithdrawal";
} & {
args: readonly [token: `0x${string}`, to: `0x${string}`, amount: bigint, memo: `0x${string}`, gasLimit: bigint, `0x${string}`, data: `0x${string}`, `0x${string}`];
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}))[];
}
/**
* Requests a private Zone deposit and waits for the Zone transaction receipt.
* The receipt confirms withdrawal acceptance, not the parent-chain deposit.
*
* @param client - Zone client.
* @param parameters - Prepared deposit and transaction parameters.
* @returns The Zone transaction receipt and parent-chain withdrawal sender tag.
*/
export declare function privateDepositSync<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: privateDepositSync.Parameters<chain, account>): Promise<privateDepositSync.ReturnValue>;
export declare namespace privateDepositSync {
type Args = privateDeposit.Args;
type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = privateDeposit.Parameters<chain, account> & WriteSyncParameters<chain, account>;
type ReturnValue = zoneActions.requestWithdrawalSync.ReturnValue;
type ErrorType = zoneActions.requestWithdrawalSync.ErrorType;
}
/**
* Waits for a Zone gateway deposit to complete on the parent chain.
*
* @example
* ```ts
* const result = await Actions.earn.waitForPrivateDeposit(parentClient, {
* actionId: prepared.actionId,
* fromBlock: prepared.fromBlock,
* gateway: '0x...',
* vault: '0x...',
* })
* ```
*
* @param client - Parent-chain client.
* @param parameters - Prepared action correlation and polling parameters.
* @returns The completed gateway deposit.
*/
export declare function waitForPrivateDeposit<chain extends Chain | undefined>(client: Client<Transport, chain>, parameters: waitForPrivateDeposit.Parameters): Promise<waitForPrivateDeposit.ReturnType>;
export declare namespace waitForPrivateDeposit {
type Parameters = {
/** Correlation id from {@link privateDeposit.prepare}. */
actionId: Hex.Hex;
/** Lower bound for the parent-chain log scan. */
fromBlock: bigint;
/** Zone gateway address. */
gateway: Address;
/** Polling frequency in milliseconds. @default `client.pollingInterval` */
pollingInterval?: number | undefined;
/** Timeout in milliseconds; `0` disables it. @default `60_000` */
timeout?: number | undefined;
/** Vault address. */
vault: Address;
};
type ReturnType = {
/** Correlation id for the completed deposit. */
actionId: Hex.Hex;
/** Tokens delivered to the gateway, base units. */
inputAmount: bigint;
/** Token delivered to the gateway. */
inputToken: Address;
/** Earn shares returned to the Zone. */
shares: bigint;
/** Parent-chain block containing the gateway event. */
tempoBlockNumber: bigint;
/** Vault assets deposited after any swap. */
vaultAssets: bigint;
/** Encrypted return deposit hash. */
zoneDepositHash: Hex.Hex;
};
type ErrorType = GetLogsErrorType | ObserveErrorType | PollErrorType | WaitForPrivateDepositTimeoutErrorType | BaseErrorType;
}
/**
* Gets the vault's active fee configuration, pending fees, and fee baselines.
*
* @example
* ```ts
* import { createClient, http } from 'viem'
* import { tempoModerato } from 'viem/chains'
* import { Actions } from 'viem/tempo'
*
* const client = createClient({
* chain: tempoModerato,
* transport: http(),
* })
*
* const feeState = await Actions.earn.getFeeState(client, {
* vault: '0x...',
* })
* ```
*
* @param client - Client.
* @param parameters - Parameters.
* @returns The active fee configuration, pending fees, and baselines.
*/
export declare function getFeeState<chain extends Chain | undefined>(client: Client<Transport, chain>, parameters: getFeeState.Parameters): Promise<getFeeState.ReturnValue>;
export declare namespace getFeeState {
type Args = {
/** Optional fee recipient whose claimable Earn shares are included. */
recipient?: Address | undefined;
/** Vault address. */
vault: Address;
};
type Parameters = Omit<ReadParameters, 'account'> & Args;
type ReturnValue = {
/** Claimable fee shares for `recipient`; present when provided. */
claimableShares?: bigint | undefined;
/** Active fee configuration. */
config: FeeConfig;
/** Active fee configuration id (starts at `1`). */
configId: bigint;
/** Whether fees are configured and not emergency-disabled. */
feesActive: boolean;
/** Post-fee high-water mark per Earn share. */
highWaterMark: bigint;
/** Pending fee amounts. */
preview: FeePreview;
/** Excess-return fee target per Earn share. */
targetBase: bigint;
};
type ErrorType = BaseErrorType;
}
/** Vault fee configuration. */
export type FeeConfig = {
/** Optional excess-return fee over a growing target line. */
excess: {
/** Excess fee recipient. */
account: Address;
/** Annual target growth rate in basis points. */
annualTargetRateBps: number;
/** Whether the excess fee is active. */
enabled: boolean;
/** Rate applied above the target in basis points. */
excessFeeRateBps: number;
};
/** Fixed fee recipients and their rates in basis points. */
fixedFees: readonly {
account: Address;
rateBps: number;
}[];
};
/** Pending vault fee amounts. */
export type FeePreview = {
/** Assets backing active Earn shares. */
activeAssets: bigint;
/** Fee allocations in assets and Earn shares. */
allocations: readonly {
account: Address;
feeAssets: bigint;
feeShares: bigint;
}[];
/** Excess-return fee portion, asset units. */
excessFeeAssets: bigint;
/** Fixed fee portion, asset units. */
fixedFeeAssets: bigint;
/** Accrual above the high-water mark, asset units. */
positiveAccrualAssets: bigint;
/** Scaled asset value per Earn share after fees. */
postFeeValuePerShare: bigint;
/** Scaled asset value per Earn share before fees. */
preFeeValuePerShare: bigint;
/** Scaled excess-fee target per Earn share. */
targetValuePerShare: bigint;
/** Total fee liability, asset units. */
totalFeeAssets: bigint;
/** Earn shares minted to cover the total fee. */
totalFeeShares: bigint;
};
/**
* Gets an account's asset and Earn share balances, allowances, and current
* share value. The value includes fees.
*
* @example
* ```ts
* import { createClient, http } from 'viem'
* import { tempoModerato } from 'viem/chains'
* import { Actions } from 'viem/tempo'
*
* const client = createClient({
* chain: tempoModerato,
* transport: http(),
* })
*
* const position = await Actions.earn.getPosition(client, {
* account: '0x...',
* vault: '0x...',
* })
* ```
*
* @param client - Client.
* @param parameters - Parameters.
* @returns The asset and Earn share balances, allowances, and value.
*/
export declare function getPosition<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: getPosition.Parameters<account>): Promise<getPosition.ReturnValue>;
export declare namespace getPosition {
type Args<account extends Account | undefined = Account | undefined> = GetAccountParameter<account> & {
/** Vault address. */
vault: Address;
};
type Parameters<account extends Account | undefined = Account | undefined> = Omit<ReadParameters, 'account'> & Args<account>;
type ReturnValue = {
/** Assets the vault may spend from the account. */
assetAllowance: bigint;
/** Asset balance held by the account. */
assetBalance: bigint;
/** Token accepted by the vault. */
assetToken: Address;
/** Earn shares the vault may spend from the account. */
shareAllowance: bigint;
/** Earn share balance held by the account. */
shareBalance: bigint;
/** Token representing Earn shares. */
shareToken: Address;
/** Current asset value of the Earn share balance, including fees. */
value: bigint;
};
type ErrorType = BaseErrorType;
}
/**
* Gets the asset output for an exact Earn share input, including fees.
*
* @example
* ```ts
* import { createClient, http } from 'viem'
* import { tempoModerato } from 'viem/chains'
* import { Actions } from 'viem/tempo'
*
* const client = createClient({
* chain: tempoModerato,
* transport: http(),
* })
*
* const assetAmount = await Actions.earn.getRedeemQuote(client, {
* shareAmount: 100_000_000n,
* vault: '0x...',
* })
* ```
*
* @param client - Client.
* @param parameters - Parameters.
* @returns The asset output, including fees.
*/
export declare function getRedeemQuote<chain extends Chain | undefined>(client: Client<Transport, chain>, parameters: getRedeemQuote.Parameters): Promise<getRedeemQuote.ReturnValue>;
export declare namespace getRedeemQuote {
type Args = {
/** Exact Earn share input, base units. */
shareAmount: bigint;
/** Vault address. */
vault: Address;
};
type Parameters = Omit<ReadParameters, 'account'> & Args;
/** Asset output, including fees. */
type ReturnValue = ReadContractReturnType<typeof Abis.earnVault, 'previewRedeem', never>;
type ErrorType = BaseErrorType;
/**
* Defines a call to the vault's `previewRedeem` function.
*
* Can be passed as a parameter to:
* - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call
* - [`multicall`](https://viem.sh/docs/contract/multicall): batch the call with other contract reads
* - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call
*
* @example
* ```ts
* import { Actions } from 'viem/tempo'
*
* const call = Actions.earn.getRedeemQuote.call({
* shareAmount: 100_000_000n,
* vault: '0x...',
* })
* ```
*
* @param args - Arguments.
* @returns The call.
*/
function call(args: Args): {
abi: [{
readonly type: "function";
readonly name: "previewRedeem";
readonly inputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}];
functionName: "previewRedeem";
} & {
args: readonly [bigint];
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
};
}
/**
* Gets the vault's addresses, configuration, accounting state, and supported
* actions. Throws {@link GetVaultEngineChangedError} if its engine changes mid-read.
*
* @example
* ```ts
* import { createClient, http } from 'viem'
* import { tempoModerato } from 'viem/chains'
* import { Actions } from 'viem/tempo'
*
* const client = createClient({
* chain: tempoModerato,
* transport: http(),
* })
*
* const vault = await Actions.earn.getVault(client, {
* vault: '0x...',
* })
* ```
*
* @param client - Client.
* @param parameters - Parameters.
* @returns The vault state and metadata.
*/
export declare function getVault<chain extends Chain | undefined>(client: Client<Transport, chain>, parameters: getVault.Parameters): Promise<getVault.ReturnValue>;
export declare namespace getVault {
type Args = {
/** Vault address. */
vault: Address;
};
type Parameters = Omit<ReadParameters, 'account'> & Args;
type ReturnValue = {
/** Token accepted by the vault. */
assetToken: Address;
/** Address allowed to cancel queued redemptions; zero when disabled. */
asyncJanitor: Address;
/** Actions supported by the current venue integration. */
capabilities: {
/** Queued redemptions. */
asyncRedeem: boolean;
/** Exact asset withdrawals. */
exactWithdraw: boolean;
/** Venue share deposits. */
inKindDeposit: boolean;
/** Immediate redemptions. */
syncRedeem: boolean;
};
/** Whether new deposits are paused. */
depositsPaused: boolean;
/** Address allowed to pause deposits; zero when disabled. */
emergencyGuardian: Address;
/** Current venue integration. */
engine: {
/** Integration address. */
address: Address;
/** Engine display name. */
name: string;
/** Engine display symbol. */
symbol: string;
/** Asset value of the active backing. */
totalAssets: bigint;
};
/** Whether only users may change the venue integration. */
engineMigrationMode: 'operatorEnabled' | 'userOnly';
/** Venue shares held for the vault. */
engineShares: bigint;
/** Whether fees are configured and not emergency-disabled. */
feesActive: boolean;
/** Whether Earn share supply matches its asset backing. */
isSynced: boolean;
/** Vault governance address. */
operator: Address;
/** Open queued redemptions. */
pendingRedeemCount: bigint;
/** Active Earn share supply. */
shareSupply: bigint;
/** Token representing Earn shares. */
shareToken: Address;
};
type ErrorType = GetVaultEngineChangedErrorType | BaseErrorType;
/**
* Defines the reads used by {@link getVault}. Pass the current engine and
* fee contract addresses.
*
* @param args - Arguments.
* @returns The calls.
*/
function calls(args: Args & {
engine: Address;
fees: Address;
}): readonly [{
abi: [{
readonly type: "function";
readonly name: "asset";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}];
functionName: "asset";
} & {
args?: readonly [] | undefined;
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}, {
abi: [{
readonly type: "function";
readonly name: "engine";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}];
functionName: "engine";
} & {
args?: readonly [] | undefined;
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}, {
abi: [{
readonly type: "function";
readonly name: "earnShare";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}];
functionName: "earnShare";
} & {
args?: readonly [] | undefined;
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}, {
abi: [{
readonly type: "function";
readonly name: "operator";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}];
functionName: "operator";
} & {
args?: readonly [] | undefined;
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}, {
abi: [{
readonly type: "function";
readonly name: "emergencyGuardian";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}];
functionName: "emergencyGuardian";
} & {
args?: readonly [] | undefined;
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}, {
abi: [{
readonly type: "function";
readonly name: "asyncJanitor";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}];
functionName: "asyncJanitor";
} & {
args?: readonly [] | undefined;
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}, {
abi: [{
readonly type: "function";
readonly name: "engineMigrationMode";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint8";
}];
readonly stateMutability: "view";
}];
functionName: "engineMigrationMode";
} & {
args?: readonly [] | undefined;
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}, {
abi: [{
readonly type: "function";
readonly name: "depositsPaused";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "bool";
}];
readonly stateMutability: "view";
}];
functionName: "depositsPaused";
} & {
args?: readonly [] | undefined;
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}, {
abi: [{
readonly type: "function";
readonly name: "engineShares";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}];
functionName: "engineShares";
} & {
args?: readonly [] | undefined;
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}, {
abi: [{
readonly type: "function";
readonly name: "totalEarnShares";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}];
functionName: "totalEarnShares";
} & {
args?: readonly [] | undefined;
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}, {
abi: [{
readonly type: "function";
readonly name: "isAccountingAligned";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "bool";
}];
readonly stateMutability: "view";
}];
functionName: "isAccountingAligned";
} & {
args?: readonly [] | undefined;
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}, {
abi: [{
readonly type: "function";
readonly name: "openRedeemRequestCount";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}];
functionName: "openRedeemRequestCount";
} & {
args?: readonly [] | undefined;
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}, {
abi: [{
readonly type: "function";
readonly name: "feesActive";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "bool";
}];
readonly stateMutability: "view";
}];
functionName: "feesActive";
} & {
args?: readonly [] | undefined;
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}, {
abi: [{
readonly type: "function";
readonly name: "totalAssets";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}];
functionName: "totalAssets";
} & {
args?: readonly [] | undefined;
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}, {
abi: [{
readonly type: "function";
readonly name: "name";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "string";
}];
readonly stateMutability: "view";
}];
functionName: "name";
} & {
args?: readonly [] | undefined;
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}, {
abi: [{
readonly type: "function";
readonly name: "symbol";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "string";
}];
readonly stateMutability: "view";
}];
functionName: "symbol";
} & {
args?: readonly [] | undefined;
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}, {
abi: [{
readonly type: "function";
readonly name: "supportsInterface";
readonly inputs: readonly [{
readonly name: "interfaceId";
readonly type: "bytes4";
}];
readonly outputs: readonly [{
readonly name: "";
readonly type: "bool";
}];
readonly stateMutability: "view";
}];
functionName: "supportsInterface";
} & {
args: readonly [interfaceId: `0x${string}`];
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}, {
abi: [{
readonly type: "function";
readonly name: "supportsInterface";
readonly inputs: readonly [{
readonly name: "interfaceId";
readonly type: "bytes4";
}];
readonly outputs: readonly [{
readonly name: "";
readonly type: "bool";
}];
readonly stateMutability: "view";
}];
functionName: "supportsInterface";
} & {
args: readonly [interfaceId: `0x${string}`];
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}, {
abi: [{
readonly type: "function";
readonly name: "supportsInterface";
readonly inputs: readonly [{
readonly name: "interfaceId";
readonly type: "bytes4";
}];
readonly outputs: readonly [{
readonly name: "";
readonly type: "bool";
}];
readonly stateMutability: "view";
}];
functionName: "supportsInterface";
} & {
args: readonly [interfaceId: `0x${string}`];
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}, {
abi: [{
readonly type: "function";
readonly name: "supportsInterface";
readonly inputs: readonly [{
readonly name: "interfaceId";
readonly type: "bytes4";
}];
readonly outputs: readonly [{
readonly name: "";
readonly type: "bool";
}];
readonly stateMutability: "view";
}];
functionName: "supportsInterface";
} & {
args: readonly [interfaceId: `0x${string}`];
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}];
}
/**
* Gets the Earn shares required for an exact asset output, including fees
* and ceiling rounding.
*
* @example
* ```ts
* import { createClient, http } from 'viem'
* import { tempoModerato } from 'viem/chains'
* import { Actions } from 'viem/tempo'
*
* const client = createClient({
* chain: tempoModerato,
* transport: http(),
* })
*
* const shareAmount = await Actions.earn.getWithdrawQuote(client, {
* assetAmount: 250_000_000n,
* vault: '0x...',
* })
* ```
*
* @param client - Client.
* @param parameters - Parameters.
* @returns The required Earn share input, ceiling-rounded.
*/
export declare function getWithdrawQuote<chain extends Chain | undefined>(client: Client<Transport, chain>, parameters: getWithdrawQuote.Parameters): Promise<getWithdrawQuote.ReturnValue>;
export declare namespace getWithdrawQuote {
type Args = {
/** Exact asset output, base units. */
assetAmount: bigint;
/** Vault address. */
vault: Address;
};
type Parameters = Omit<ReadParameters, 'account'> & Args;
/** Required Earn share input, ceiling-rounded. */
type ReturnValue = ReadContractReturnType<typeof Abis.earnVault, 'previewWithdraw', never>;
type ErrorType = BaseErrorType;
/**
* Defines a call to the vault's `previewWithdraw` function.
*
* Can be passed as a parameter to:
* - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call
* - [`multicall`](https://viem.sh/docs/contract/multicall): batch the call with other contract reads
* - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call
*
* @example
* ```ts
* import { Actions } from 'viem/tempo'
*
* const call = Actions.earn.getWithdrawQuote.call({
* assetAmount: 250_000_000n,
* vault: '0x...',
* })
* ```
*
* @param args - Arguments.
* @returns The call.
*/
function call(args: Args): {
abi: [{
readonly type: "function";
readonly name: "previewWithdraw";
readonly inputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}];
functionName: "previewWithdraw";
} & {
args: readonly [assets: bigint];
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
};
}
/**
* Redeems Earn shares for assets sent to `recipient`. The transaction
* includes the required Earn share approval.
*
* @example
* ```ts
* import { createClient, http } from 'viem'
* import { privateKeyToAccount } from 'viem/accounts'
* import { tempoModerato } from 'viem/chains'
* import { Actions } from 'viem/tempo'
*
* const client = createClient({
* account: privateKeyToAccount('0x...'),
* chain: tempoModerato,
* transport: http(),
* })
*
* const hash = await Actions.earn.redeem(client, {
* shareAmount: 100_000_000n,
* slippageBps: 50,
* vault: '0x...',
* })
* ```
*
* @param client - Client.
* @param parameters - Parameters.
* @returns The transaction hash.
*/
export declare function redeem<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: redeem.Parameters<chain, account>): Promise<redeem.ReturnValue>;
export declare namespace redeem {
type Args = {
/** Earn shares to redeem; base units or `{ formatted, decimals? }`. */
shareAmount: internal_Token.AmountInput;
/** Asset recipient. @default `account.address` */
recipient?: Address | undefined;
/** Vault address. */
vault: Address;
} & OneOf<{
/** Minimum asset output to accept; must be greater than zero. */
assetAmountMin: bigint;
} | {
/** Slippage tolerance in basis points under a live {@link getRedeemQuote} (50 = 0.5%). */
slippageBps: number;
} | {
/** Quoted asset output; floored by `slippageBps`. */
assetAmount: bigint;
/** Slippage tolerance in basis points under `assetAmount` (50 = 0.5%). */
slippageBps: number;
}>;
type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = WriteParameters<chain, account> & Args;
type ReturnValue = SendTransactionReturnType;
type ErrorType = BaseErrorType;
/** @internal Shared dispatch; reads the Earn share token for the approval. */
function inner<action extends typeof sendTransaction | typeof sendTransactionSync, chain extends Chain | undefined, account extends Account | undefined>(action: action, client: Client<Transport, chain, account>, parameters: redeem.Parameters<chain, account>): Promise<ReturnType<action>>;
/**
* Defines a redeem call without an approval. Provide Earn share decimals
* for formatted inputs and an explicit output bound because this builder performs no reads.
*
* @param parameters - Client (optional), followed by the call arguments.
* @returns The call.
*/
function call<chain extends Chain | undefined>(...parameters: CallParameters<call.Args, Client<Transport, chain>>): {
abi: [{
readonly type: "function";
readonly name: "redeem";
readonly inputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}, {
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "minAssets";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}];
functionName: "redeem";
} & {
args: readonly [bigint, receiver: `0x${string}`, bigint];
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
};
namespace call {
type Args = {
/** Earn shares to redeem; base units or `{ formatted, decimals? }`. */
shareAmount: internal_Token.AmountInput;
/** Asset recipient. */
recipient: Address;
/** Vault address. */
vault: Address;
} & OneOf<{
/** Minimum asset output to accept. */
assetAmountMin: bigint;
} | {
/** Quoted asset output; floored by `slippageBps`. */
assetAmount: bigint;
/** Slippage tolerance in basis points under `assetAmount` (50 = 0.5%). */
slippageBps: number;
}>;
}
/**
* Defines the Earn share approval and redeem calls for atomic execution.
* Pass `shareToken` explicitly because this builder performs no reads.
*
* @param args - Arguments.
* @returns The calls.
*/
function calls(args: call.Args & {
/** Earn share token approved for the redemption. */
shareToken: Address;
}): (({
abi: [{
readonly name: "approve";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "spender";
}, {
readonly type: "uint256";
readonly name: "amount";
}];
readonly outputs: readonly [{
readonly type: "bool";
}];
}];
functionName: "approve";
} & {
args: readonly [spender: `0x${string}`, amount: bigint];
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}) | ({
abi: [{
readonly type: "function";
readonly name: "redeem";
readonly inputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}, {
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "minAssets";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}];
functionName: "redeem";
} & {
args: readonly [bigint, receiver: `0x${string}`, bigint];
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}))[];
/**
* Extracts a `Redeemed` event from the vault's logs.
*
* @param logs - Logs.
* @param parameters - Parameters.
* @returns The `Redeemed` event.
*/
function extractEvent(logs: Log[], parameters: {
vault: Address;
}): Log<bigint, number, false, undefined, true, readonly [{
readonly type: "constructor";
readonly inputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "MAX_REWARD_RATE_MULTIPLIER";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "absorbEngineShareSurplus";
readonly inputs: readonly [{
readonly name: "engineShares_";
readonly type: "uint256";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "acceptDistributor";
readonly inputs: readonly [];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "accrueFees";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "feeAssets";
readonly type: "uint256";
}, {
readonly name: "feeEarnShares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "anchorEarnShares";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "anchorEngineShares";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "asset";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "asyncJanitor";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "cancelDistributorFeeUpdate";
readonly inputs: readonly [];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "cancelDistributorTransfer";
readonly inputs: readonly [];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "cancelRedeem";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
}, {
readonly name: "minReceiverEarnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "contribute";
readonly inputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "receivedEngineShares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "convertEngineSharesToEarnShares";
readonly inputs: readonly [{
readonly name: "engineShares_";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "convertToEngineShares";
readonly inputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "engineShares_";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "deposit";
readonly inputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}, {
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "minEarnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "depositVenueShares";
readonly inputs: readonly [{
readonly name: "venueShares";
readonly type: "uint256";
}, {
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "minEarnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "depositsPaused";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "bool";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "disableFees";
readonly inputs: readonly [];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "distributor";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "distributorFee";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "recipient";
readonly type: "address";
}, {
readonly name: "rateBps";
readonly type: "uint16";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "distributorUpdateDelay";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint40";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "earnFees";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "earnShare";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "emergencyGuardian";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "engine";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "engineMigrationMode";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint8";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "engineShares";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "executeDistributorFeeUpdate";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "feeConfigId";
readonly type: "uint64";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "finalizeRedeem";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
}, {
readonly name: "asset_";
readonly type: "address";
}, {
readonly name: "amount";
readonly type: "uint256";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "initialize";
readonly inputs: readonly [{
readonly name: "engine_";
readonly type: "address";
}, {
readonly name: "earnShare_";
readonly type: "address";
}, {
readonly name: "earnFees_";
readonly type: "address";
}, {
readonly name: "operator_";
readonly type: "address";
}, {
readonly name: "controlInit_";
readonly type: "tuple";
readonly components: readonly [{
readonly name: "emergencyGuardian";
readonly type: "address";
}, {
readonly name: "asyncJanitor";
readonly type: "address";
}, {
readonly name: "maxManagedAssets";
readonly type: "uint256";
}, {
readonly name: "migrationMode";
readonly type: "uint8";
}];
}, {
readonly name: "distributorInit_";
readonly type: "tuple";
readonly components: readonly [{
readonly name: "distributor";
readonly type: "address";
}, {
readonly name: "updateDelay";
readonly type: "uint40";
}];
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "isAccountingAligned";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "bool";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "isFeeValuationFresh";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "bool";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "maxManagedAssets";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "migrateEngine";
readonly inputs: readonly [{
readonly name: "newEngine";
readonly type: "address";
}, {
readonly name: "minNewEngineShares";
readonly type: "uint256";
}, {
readonly name: "minAssetsRetained";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "newEngineShares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "normalizedRewardRate";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "openRedeemRequestCount";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "operator";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "pendingDistributor";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "pendingDistributorFeeUpdate";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "tuple";
readonly components: readonly [{
readonly name: "recipient";
readonly type: "address";
}, {
readonly name: "rateBps";
readonly type: "uint16";
}, {
readonly name: "executableAt";
readonly type: "uint40";
}, {
readonly name: "pending";
readonly type: "bool";
}];
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "pendingRedeem";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
}];
readonly outputs: readonly [{
readonly name: "";
readonly type: "tuple";
readonly components: readonly [{
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "requester";
readonly type: "address";
}, {
readonly name: "burnedEarnShares";
readonly type: "uint256";
}, {
readonly name: "engineShares";
readonly type: "uint256";
}, {
readonly name: "open";
readonly type: "bool";
}];
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "previewRedeem";
readonly inputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "previewWithdraw";
readonly inputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "rawEngineShares";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "redeem";
readonly inputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}, {
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "minAssets";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "remainingDepositCapacity";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "requestRedeem";
readonly inputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}, {
readonly name: "engineData";
readonly type: "bytes";
}, {
readonly name: "receiver";
readonly type: "address";
}];
readonly outputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "rewardRateBaseline";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "scheduleDistributorFeeUpdate";
readonly inputs: readonly [{
readonly name: "recipient";
readonly type: "address";
}, {
readonly name: "rateBps";
readonly type: "uint16";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setDepositsPaused";
readonly inputs: readonly [{
readonly name: "paused";
readonly type: "bool";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setEmergencyRoles";
readonly inputs: readonly [{
readonly name: "newGuardian";
readonly type: "address";
}, {
readonly name: "newJanitor";
readonly type: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setFeeConfig";
readonly inputs: readonly [{
readonly name: "config";
readonly type: "tuple";
readonly components: readonly [{
readonly name: "fixedFeeCount";
readonly type: "uint8";
}, {
readonly name: "fixedFees";
readonly type: "tuple[4]";
readonly components: readonly [{
readonly name: "account";
readonly type: "address";
}, {
readonly name: "rateBps";
readonly type: "uint16";
}];
}, {
readonly name: "excess";
readonly type: "tuple";
readonly components: readonly [{
readonly name: "enabled";
readonly type: "bool";
}, {
readonly name: "account";
readonly type: "address";
}, {
readonly name: "annualTargetRateBps";
readonly type: "uint16";
}, {
readonly name: "excessFeeRateBps";
readonly type: "uint16";
}];
}];
}];
readonly outputs: readonly [{
readonly name: "configId";
readonly type: "uint64";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setMaxManagedAssets";
readonly inputs: readonly [{
readonly name: "newMaxManagedAssets";
readonly type: "uint256";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "surplusEngineShares";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "totalAssets";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "totalEarnShares";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "transferDistributor";
readonly inputs: readonly [{
readonly name: "newDistributor";
readonly type: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "withdrawExact";
readonly inputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}, {
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "maxEarnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnSharesBurned";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "event";
readonly name: "Contributed";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "assets";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "engineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "anchorEngineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "anchorEarnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DepositPauseChanged";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "paused";
readonly type: "bool";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "Deposited";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "assets";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "earnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DistributorFeeUpdateCancelled";
readonly inputs: readonly [{
readonly name: "distributor";
readonly type: "address";
readonly indexed: true;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DistributorFeeUpdateScheduled";
readonly inputs: readonly [{
readonly name: "distributor";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "recipient";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "rateBps";
readonly type: "uint16";
readonly indexed: false;
}, {
readonly name: "executableAt";
readonly type: "uint40";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DistributorFeeUpdated";
readonly inputs: readonly [{
readonly name: "recipient";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "rateBps";
readonly type: "uint16";
readonly indexed: false;
}, {
readonly name: "feeConfigId";
readonly type: "uint64";
readonly indexed: true;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DistributorTransferCancelled";
readonly inputs: readonly [{
readonly name: "distributor";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "pendingDistributor";
readonly type: "address";
readonly indexed: true;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DistributorTransferStarted";
readonly inputs: readonly [{
readonly name: "distributor";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "pendingDistributor";
readonly type: "address";
readonly indexed: true;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DistributorTransferred";
readonly inputs: readonly [{
readonly name: "previousDistributor";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "newDistributor";
readonly type: "address";
readonly indexed: true;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "EmergencyRolesChanged";
readonly inputs: readonly [{
readonly name: "emergencyGuardian";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "asyncJanitor";
readonly type: "address";
readonly indexed: true;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "EngineMigrated";
readonly inputs: readonly [{
readonly name: "oldEngine";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "newEngine";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "oldEngineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "assetsMoved";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "newEngineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "totalEarnShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "anchorEngineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "anchorEarnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "EngineShareSurplusAbsorbed";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "engineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "anchorEngineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "anchorEarnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "MaxManagedAssetsChanged";
readonly inputs: readonly [{
readonly name: "previousMaxManagedAssets";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "newMaxManagedAssets";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "RedeemCancelled";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "earnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "RedeemFinalized";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "earnShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "asset";
readonly type: "address";
readonly indexed: false;
}, {
readonly name: "assets";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "RedeemRequested";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
readonly indexed: true;
}, {
readonly name: "requester";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "earnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "Redeemed";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "earnShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "assets";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "VenueSharesDeposited";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "requestedVenueShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "receivedEngineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "earnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "WithdrewExact";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "assets";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "earnSharesBurned";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "error";
readonly name: "ActiveSupplyWithoutBacking";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "AlreadyInitialized";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "DepositsPaused";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "DistributorFeeUpdateNotPending";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "DistributorFeeUpdateNotReady";
readonly inputs: readonly [{
readonly name: "executableAt";
readonly type: "uint40";
}];
}, {
readonly type: "error";
readonly name: "DistributorTransferNotPending";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "DuplicateRequest";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
}];
}, {
readonly type: "error";
readonly name: "EngineAssetMismatch";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "EngineCapabilityUnsupported";
readonly inputs: readonly [{
readonly name: "interfaceId";
readonly type: "bytes4";
}];
}, {
readonly type: "error";
readonly name: "EngineEarnVaultMismatch";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "EngineExitUnsupported";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ExceedsMaxEarnShares";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ExcessiveConversionLoss";
readonly inputs: readonly [{
readonly name: "inputShares";
readonly type: "uint256";
}, {
readonly name: "representedShares";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "ExcessiveMigrationClassificationError";
readonly inputs: readonly [{
readonly name: "expectedManagedAssets";
readonly type: "uint256";
}, {
readonly name: "actualManagedAssets";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "FeeValuationStale";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "FinalizedAssetMismatch";
readonly inputs: readonly [{
readonly name: "finalizedAsset";
readonly type: "address";
}];
}, {
readonly type: "error";
readonly name: "GlobalFeeDisableUnavailable";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "InitialEarnShareSupplyNotZero";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "InsufficientEngineShareSurplus";
readonly inputs: readonly [{
readonly name: "available";
readonly type: "uint256";
}, {
readonly name: "requested";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "InsufficientOutput";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "InvalidDistributorConfiguration";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "InvalidDistributorFeeConfiguration";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "InvalidEarnDecimals";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "InvalidEngineShareScale";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "MaxManagedAssetsExceeded";
readonly inputs: readonly [{
readonly name: "maximum";
readonly type: "uint256";
}, {
readonly name: "actual";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "MinimumAssetsNotMet";
readonly inputs: readonly [{
readonly name: "minimumAssets";
readonly type: "uint256";
}, {
readonly name: "actualAssets";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "MinimumEarnSharesNotMet";
readonly inputs: readonly [{
readonly name: "minimumEarnShares";
readonly type: "uint256";
}, {
readonly name: "actualEarnShares";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "MinimumEngineSharesNotMet";
readonly inputs: readonly [{
readonly name: "minimumEngineShares";
readonly type: "uint256";
}, {
readonly name: "actualEngineShares";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "NoEarnShares";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotDistributor";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotEmergencyGuardianOrOperator";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotEngine";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotOperator";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotPendingDistributor";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotRequesterOrJanitor";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "OperatorMigrationDisabled";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "PendingRedeemsOpen";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ReentrantCall";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "RequestNotOpen";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
}];
}, {
readonly type: "error";
readonly name: "ResidualBacking";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "RewardRateLimitExceeded";
readonly inputs: readonly [{
readonly name: "normalizedRate";
readonly type: "uint256";
}, {
readonly name: "baselineRate";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "SameEngine";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "TokenCallFailed";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "TokenCallFalse";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ZeroAddress";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ZeroAmount";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ZeroMinimumAssets";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ZeroMinimumEarnShares";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ZeroMinimumEngineShares";
readonly inputs: readonly [];
}], "Redeemed">;
/**
* Estimates gas for a redemption, assuming enough Earn share allowance.
*
* @param client - Client.
* @param parameters - Parameters.
* @returns The gas estimate.
*/
function estimateGas<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: redeem.Parameters<chain, account>): Promise<bigint>;
/**
* Simulates a redemption, assuming enough Earn share allowance.
*
* @param client - Client.
* @param parameters - Parameters.
* @returns The simulation result and write request.
*/
function simulate<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: redeem.Parameters<chain, account>): Promise<SimulateContractReturnType<typeof Abis.earnVault, 'redeem'>>;
}
/**
* Redeems Earn shares and returns the confirmed receipt and event data.
*
* @example
* ```ts
* import { createClient, http } from 'viem'
* import { privateKeyToAccount } from 'viem/accounts'
* import { tempoModerato } from 'viem/chains'
* import { Actions } from 'viem/tempo'
*
* const client = createClient({
* account: privateKeyToAccount('0x...'),
* chain: tempoModerato,
* transport: http(),
* })
*
* const { assetAmount } = await Actions.earn.redeemSync(client, {
* assetAmountMin: 99_500_000n,
* shareAmount: 100_000_000n,
* vault: '0x...',
* })
* ```
*
* @param client - Client.
* @param parameters - Parameters.
* @returns The transaction receipt and event data.
*/
export declare function redeemSync<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: redeemSync.Parameters<chain, account>): Promise<redeemSync.ReturnValue>;
export declare namespace redeemSync {
type Args = redeem.Args;
type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = redeem.Parameters<chain, account> & WriteSyncParameters<chain, account>;
type ReturnValue = Compute<{
/** Assets paid out. */
assetAmount: bigint;
/** Redeeming caller. */
caller: Address;
/** Transaction receipt. */
receipt: TransactionReceipt;
/** Asset recipient. */
recipient: Address;
/** Earn shares burned. */
shareAmount: bigint;
}>;
type ErrorType = BaseErrorType;
}
/**
* Withdraws Earn shares from a Zone and redeems them on the parent chain. Use
* {@link privateRedeem.prepare} to build the encrypted callback.
*
* @example
* ```ts
* const prepared = await Actions.earn.privateRedeem.prepare(parentClient, {
* gateway: '0x...',
* recipient: '0x...',
* shareAmount: 100_000_000n,
* slippageBps: 50,
* tempoRefundRecipient: '0x...',
* vault: '0x...',
* zoneId: 7,
* })
* const hash = await Actions.earn.privateRedeem(zoneClient, prepared)
* ```
*
* @param client - Zone client.
* @param parameters - Prepared redemption and transaction parameters.
* @returns The transaction hash.
*/
export declare function privateRedeem<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: privateRedeem.Parameters<chain, account>): Promise<privateRedeem.ReturnValue>;
export declare namespace privateRedeem {
type Args = prepare.ReturnValue;
type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = WriteParameters<chain, account> & Args;
type ReturnValue = SendTransactionReturnType;
type ErrorType = zoneActions.requestWithdrawal.ErrorType;
/**
* Builds an encrypted Zone withdrawal that redeems Earn shares and returns
* the resulting assets to the Zone.
*
* @param client - Parent-chain client.
* @param parameters - Redemption intent and recovery parameters.
* @returns The prepared withdrawal and correlation data.
*/
function prepare<chain extends Chain | undefined>(client: Client<Transport, chain>, parameters: prepare.Parameters): Promise<prepare.ReturnValue>;
namespace prepare {
type Parameters = Omit<ReadParameters, 'account'> & PrivatePreparationParameters & {
/** Earn shares withdrawn from the Zone, base units. */
shareAmount: bigint;
/** Private asset returned to the Zone. Must match the gateway. @default gateway private asset */
assetToken?: Address | undefined;
} & OneOf<{
/** Minimum assets returned to the Zone. */
assetAmountMin: bigint;
} | {
/** Quoted assets returned to the Zone. */
assetAmount: bigint;
/** Slippage tolerance under `assetAmount` (50 = 0.5%). */
slippageBps: number;
} | {
/** Slippage tolerance under a live vault quote (50 = 0.5%). */
slippageBps: number;
}>;
type ReturnValue = PreparedZoneRequest;
type ErrorType = BaseErrorType;
}
/**
* Defines the approval and Zone withdrawal calls for a prepared redemption.
*
* @param args - Prepared redemption arguments.
* @returns The Zone withdrawal calls.
*/
function calls(args: Args): (({
abi: [{
readonly name: "approve";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "spender";
}, {
readonly type: "uint256";
readonly name: "amount";
}];
readonly outputs: readonly [{
readonly type: "bool";
}];
}];
functionName: "approve";
} & {
args: readonly [spender: `0x${string}`, amount: bigint];
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}) | ({
abi: [{
readonly name: "requestWithdrawal";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "token";
}, {
readonly type: "address";
readonly name: "to";
}, {
readonly type: "uint128";
readonly name: "amount";
}, {
readonly type: "bytes32";
readonly name: "memo";
}, {
readonly type: "uint64";
readonly name: "gasLimit";
}, {
readonly type: "address";
readonly name: "zoneFallbackRecipient";
}, {
readonly type: "bytes";
readonly name: "data";
}, {
readonly type: "bytes";
readonly name: "revealTo";
}];
readonly outputs: readonly [];
}];
functionName: "requestWithdrawal";
} & {
args: readonly [token: `0x${string}`, to: `0x${string}`, amount: bigint, memo: `0x${string}`, gasLimit: bigint, `0x${string}`, data: `0x${string}`, `0x${string}`];
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}))[];
}
/**
* Requests a private Zone redemption and waits for the Zone transaction
* receipt. The receipt confirms withdrawal acceptance, not redemption.
*
* @param client - Zone client.
* @param parameters - Prepared redemption and transaction parameters.
* @returns The Zone transaction receipt and parent-chain withdrawal sender tag.
*/
export declare function privateRedeemSync<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: privateRedeemSync.Parameters<chain, account>): Promise<privateRedeemSync.ReturnValue>;
export declare namespace privateRedeemSync {
type Args = privateRedeem.Args;
type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = privateRedeem.Parameters<chain, account> & WriteSyncParameters<chain, account>;
type ReturnValue = zoneActions.requestWithdrawalSync.ReturnValue;
type ErrorType = zoneActions.requestWithdrawalSync.ErrorType;
}
/**
* Waits for a Zone gateway redemption to complete on the parent chain.
*
* @example
* ```ts
* const result = await Actions.earn.waitForPrivateRedeem(parentClient, {
* actionId: prepared.actionId,
* fromBlock: prepared.fromBlock,
* gateway: '0x...',
* vault: '0x...',
* })
* ```
*
* @param client - Parent-chain client.
* @param parameters - Prepared action correlation and polling parameters.
* @returns The completed gateway redemption.
*/
export declare function waitForPrivateRedeem<chain extends Chain | undefined>(client: Client<Transport, chain>, parameters: waitForPrivateRedeem.Parameters): Promise<waitForPrivateRedeem.ReturnType>;
export declare namespace waitForPrivateRedeem {
type Parameters = {
/** Correlation id from {@link privateRedeem.prepare}. */
actionId: Hex.Hex;
/** Lower bound for the parent-chain log scan. */
fromBlock: bigint;
/** Zone gateway address. */
gateway: Address;
/** Polling frequency in milliseconds. @default `client.pollingInterval` */
pollingInterval?: number | undefined;
/** Timeout in milliseconds; `0` disables it. @default `60_000` */
timeout?: number | undefined;
/** Vault address. */
vault: Address;
};
type ReturnType = {
/** Correlation id for the completed redemption. */
actionId: Hex.Hex;
/** Tokens returned to the Zone, base units. */
outputAmount: bigint;
/** Token returned to the Zone. */
outputToken: Address;
/** Earn shares redeemed. */
shares: bigint;
/** Parent-chain block containing the gateway event. */
tempoBlockNumber: bigint;
/** Vault assets produced before any swap. */
vaultAssets: bigint;
/** Encrypted return deposit hash. */
zoneDepositHash: Hex.Hex;
};
type ErrorType = GetLogsErrorType | ObserveErrorType | PollErrorType | WaitForPrivateRedeemTimeoutErrorType | BaseErrorType;
}
/**
* Withdraws an exact asset amount to `recipient`, up to the specified Earn
* share limit. The transaction includes the required Earn share approval;
* use {@link redeem} for a full exit.
*
* @example
* ```ts
* import { createClient, http } from 'viem'
* import { privateKeyToAccount } from 'viem/accounts'
* import { tempoModerato } from 'viem/chains'
* import { Actions } from 'viem/tempo'
*
* const client = createClient({
* account: privateKeyToAccount('0x...'),
* chain: tempoModerato,
* transport: http(),
* })
*
* const hash = await Actions.earn.withdrawExact(client, {
* assetAmount: 40_000_000n,
* slippageBps: 50,
* vault: '0x...',
* })
* ```
*
* @param client - Client.
* @param parameters - Parameters.
* @returns The transaction hash.
*/
export declare function withdrawExact<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: withdrawExact.Parameters<chain, account>): Promise<withdrawExact.ReturnValue>;
export declare namespace withdrawExact {
type Args = {
/** Exact assets to receive; base units or `{ formatted, decimals? }`. */
assetAmount: internal_Token.AmountInput;
/** Asset recipient. @default `account.address` */
recipient?: Address | undefined;
/** Vault address. */
vault: Address;
} & OneOf<{
/** Maximum Earn share input to burn. */
shareAmountMax: bigint;
} | {
/** Slippage headroom above a live {@link getWithdrawQuote}, ceiling-rounded (50 = 0.5%). */
slippageBps: number;
} | {
/** Quoted Earn share input; raised by `slippageBps`. */
shareAmount: bigint;
/** Slippage tolerance in basis points over `shareAmount` (50 = 0.5%). */
slippageBps: number;
}>;
type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = WriteParameters<chain, account> & Args;
type ReturnValue = SendTransactionReturnType;
type ErrorType = BaseErrorType;
/** @internal Shared dispatch; reads the Earn share token for the approval. */
function inner<action extends typeof sendTransaction | typeof sendTransactionSync, chain extends Chain | undefined, account extends Account | undefined>(action: action, client: Client<Transport, chain, account>, parameters: withdrawExact.Parameters<chain, account>): Promise<ReturnType<action>>;
/**
* Defines an exact withdrawal call without an approval. Provide asset
* decimals and an explicit input limit because this builder performs no reads.
*
* @param parameters - Client (optional), followed by the call arguments.
* @returns The call.
*/
function call<chain extends Chain | undefined>(...parameters: CallParameters<call.Args, Client<Transport, chain>>): {
abi: [{
readonly type: "function";
readonly name: "withdrawExact";
readonly inputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}, {
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "maxEarnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnSharesBurned";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}];
functionName: "withdrawExact";
} & {
args: readonly [assets: bigint, receiver: `0x${string}`, bigint];
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
};
namespace call {
type Args = {
/** Exact assets to receive; base units or `{ formatted, decimals? }`. */
assetAmount: internal_Token.AmountInput;
/** Asset recipient. */
recipient: Address;
/** Vault address. */
vault: Address;
} & OneOf<{
/** Maximum Earn share input to burn. */
shareAmountMax: bigint;
} | {
/** Quoted Earn share input; raised by `slippageBps`. */
shareAmount: bigint;
/** Slippage tolerance in basis points over `shareAmount` (50 = 0.5%). */
slippageBps: number;
}>;
}
/**
* Defines the Earn share approval and withdrawal calls for atomic
* execution. Pass `shareToken` explicitly because this builder performs no reads.
*
* @param args - Arguments.
* @returns The calls.
*/
function calls(args: call.Args & {
/** Earn share token approved for the withdrawal. */
shareToken: Address;
}): (({
abi: [{
readonly name: "approve";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "spender";
}, {
readonly type: "uint256";
readonly name: "amount";
}];
readonly outputs: readonly [{
readonly type: "bool";
}];
}];
functionName: "approve";
} & {
args: readonly [spender: `0x${string}`, amount: bigint];
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}) | ({
abi: [{
readonly type: "function";
readonly name: "withdrawExact";
readonly inputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}, {
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "maxEarnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnSharesBurned";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}];
functionName: "withdrawExact";
} & {
args: readonly [assets: bigint, receiver: `0x${string}`, bigint];
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
}))[];
/**
* Extracts a `WithdrewExact` event from the vault's logs.
*
* @param logs - Logs.
* @param parameters - Parameters.
* @returns The `WithdrewExact` event.
*/
function extractEvent(logs: Log[], parameters: {
vault: Address;
}): Log<bigint, number, false, undefined, true, readonly [{
readonly type: "constructor";
readonly inputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "MAX_REWARD_RATE_MULTIPLIER";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "absorbEngineShareSurplus";
readonly inputs: readonly [{
readonly name: "engineShares_";
readonly type: "uint256";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "acceptDistributor";
readonly inputs: readonly [];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "accrueFees";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "feeAssets";
readonly type: "uint256";
}, {
readonly name: "feeEarnShares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "anchorEarnShares";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "anchorEngineShares";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "asset";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "asyncJanitor";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "cancelDistributorFeeUpdate";
readonly inputs: readonly [];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "cancelDistributorTransfer";
readonly inputs: readonly [];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "cancelRedeem";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
}, {
readonly name: "minReceiverEarnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "contribute";
readonly inputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "receivedEngineShares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "convertEngineSharesToEarnShares";
readonly inputs: readonly [{
readonly name: "engineShares_";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "convertToEngineShares";
readonly inputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "engineShares_";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "deposit";
readonly inputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}, {
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "minEarnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "depositVenueShares";
readonly inputs: readonly [{
readonly name: "venueShares";
readonly type: "uint256";
}, {
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "minEarnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "depositsPaused";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "bool";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "disableFees";
readonly inputs: readonly [];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "distributor";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "distributorFee";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "recipient";
readonly type: "address";
}, {
readonly name: "rateBps";
readonly type: "uint16";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "distributorUpdateDelay";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint40";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "earnFees";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "earnShare";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "emergencyGuardian";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "engine";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "engineMigrationMode";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint8";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "engineShares";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "executeDistributorFeeUpdate";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "feeConfigId";
readonly type: "uint64";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "finalizeRedeem";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
}, {
readonly name: "asset_";
readonly type: "address";
}, {
readonly name: "amount";
readonly type: "uint256";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "initialize";
readonly inputs: readonly [{
readonly name: "engine_";
readonly type: "address";
}, {
readonly name: "earnShare_";
readonly type: "address";
}, {
readonly name: "earnFees_";
readonly type: "address";
}, {
readonly name: "operator_";
readonly type: "address";
}, {
readonly name: "controlInit_";
readonly type: "tuple";
readonly components: readonly [{
readonly name: "emergencyGuardian";
readonly type: "address";
}, {
readonly name: "asyncJanitor";
readonly type: "address";
}, {
readonly name: "maxManagedAssets";
readonly type: "uint256";
}, {
readonly name: "migrationMode";
readonly type: "uint8";
}];
}, {
readonly name: "distributorInit_";
readonly type: "tuple";
readonly components: readonly [{
readonly name: "distributor";
readonly type: "address";
}, {
readonly name: "updateDelay";
readonly type: "uint40";
}];
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "isAccountingAligned";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "bool";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "isFeeValuationFresh";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "bool";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "maxManagedAssets";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "migrateEngine";
readonly inputs: readonly [{
readonly name: "newEngine";
readonly type: "address";
}, {
readonly name: "minNewEngineShares";
readonly type: "uint256";
}, {
readonly name: "minAssetsRetained";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "newEngineShares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "normalizedRewardRate";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "openRedeemRequestCount";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "operator";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "pendingDistributor";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "pendingDistributorFeeUpdate";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "tuple";
readonly components: readonly [{
readonly name: "recipient";
readonly type: "address";
}, {
readonly name: "rateBps";
readonly type: "uint16";
}, {
readonly name: "executableAt";
readonly type: "uint40";
}, {
readonly name: "pending";
readonly type: "bool";
}];
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "pendingRedeem";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
}];
readonly outputs: readonly [{
readonly name: "";
readonly type: "tuple";
readonly components: readonly [{
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "requester";
readonly type: "address";
}, {
readonly name: "burnedEarnShares";
readonly type: "uint256";
}, {
readonly name: "engineShares";
readonly type: "uint256";
}, {
readonly name: "open";
readonly type: "bool";
}];
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "previewRedeem";
readonly inputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "previewWithdraw";
readonly inputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "rawEngineShares";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "redeem";
readonly inputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}, {
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "minAssets";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "remainingDepositCapacity";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "requestRedeem";
readonly inputs: readonly [{
readonly name: "earnShares";
readonly type: "uint256";
}, {
readonly name: "engineData";
readonly type: "bytes";
}, {
readonly name: "receiver";
readonly type: "address";
}];
readonly outputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "rewardRateBaseline";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "scheduleDistributorFeeUpdate";
readonly inputs: readonly [{
readonly name: "recipient";
readonly type: "address";
}, {
readonly name: "rateBps";
readonly type: "uint16";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setDepositsPaused";
readonly inputs: readonly [{
readonly name: "paused";
readonly type: "bool";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setEmergencyRoles";
readonly inputs: readonly [{
readonly name: "newGuardian";
readonly type: "address";
}, {
readonly name: "newJanitor";
readonly type: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setFeeConfig";
readonly inputs: readonly [{
readonly name: "config";
readonly type: "tuple";
readonly components: readonly [{
readonly name: "fixedFeeCount";
readonly type: "uint8";
}, {
readonly name: "fixedFees";
readonly type: "tuple[4]";
readonly components: readonly [{
readonly name: "account";
readonly type: "address";
}, {
readonly name: "rateBps";
readonly type: "uint16";
}];
}, {
readonly name: "excess";
readonly type: "tuple";
readonly components: readonly [{
readonly name: "enabled";
readonly type: "bool";
}, {
readonly name: "account";
readonly type: "address";
}, {
readonly name: "annualTargetRateBps";
readonly type: "uint16";
}, {
readonly name: "excessFeeRateBps";
readonly type: "uint16";
}];
}];
}];
readonly outputs: readonly [{
readonly name: "configId";
readonly type: "uint64";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "setMaxManagedAssets";
readonly inputs: readonly [{
readonly name: "newMaxManagedAssets";
readonly type: "uint256";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "surplusEngineShares";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "totalAssets";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "totalEarnShares";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
}, {
readonly type: "function";
readonly name: "transferDistributor";
readonly inputs: readonly [{
readonly name: "newDistributor";
readonly type: "address";
}];
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
}, {
readonly type: "function";
readonly name: "withdrawExact";
readonly inputs: readonly [{
readonly name: "assets";
readonly type: "uint256";
}, {
readonly name: "receiver";
readonly type: "address";
}, {
readonly name: "maxEarnShares";
readonly type: "uint256";
}];
readonly outputs: readonly [{
readonly name: "earnSharesBurned";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
}, {
readonly type: "event";
readonly name: "Contributed";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "assets";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "engineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "anchorEngineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "anchorEarnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DepositPauseChanged";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "paused";
readonly type: "bool";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "Deposited";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "assets";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "earnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DistributorFeeUpdateCancelled";
readonly inputs: readonly [{
readonly name: "distributor";
readonly type: "address";
readonly indexed: true;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DistributorFeeUpdateScheduled";
readonly inputs: readonly [{
readonly name: "distributor";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "recipient";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "rateBps";
readonly type: "uint16";
readonly indexed: false;
}, {
readonly name: "executableAt";
readonly type: "uint40";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DistributorFeeUpdated";
readonly inputs: readonly [{
readonly name: "recipient";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "rateBps";
readonly type: "uint16";
readonly indexed: false;
}, {
readonly name: "feeConfigId";
readonly type: "uint64";
readonly indexed: true;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DistributorTransferCancelled";
readonly inputs: readonly [{
readonly name: "distributor";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "pendingDistributor";
readonly type: "address";
readonly indexed: true;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DistributorTransferStarted";
readonly inputs: readonly [{
readonly name: "distributor";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "pendingDistributor";
readonly type: "address";
readonly indexed: true;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "DistributorTransferred";
readonly inputs: readonly [{
readonly name: "previousDistributor";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "newDistributor";
readonly type: "address";
readonly indexed: true;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "EmergencyRolesChanged";
readonly inputs: readonly [{
readonly name: "emergencyGuardian";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "asyncJanitor";
readonly type: "address";
readonly indexed: true;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "EngineMigrated";
readonly inputs: readonly [{
readonly name: "oldEngine";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "newEngine";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "oldEngineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "assetsMoved";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "newEngineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "totalEarnShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "anchorEngineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "anchorEarnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "EngineShareSurplusAbsorbed";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "engineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "anchorEngineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "anchorEarnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "MaxManagedAssetsChanged";
readonly inputs: readonly [{
readonly name: "previousMaxManagedAssets";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "newMaxManagedAssets";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "RedeemCancelled";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "earnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "RedeemFinalized";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "earnShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "asset";
readonly type: "address";
readonly indexed: false;
}, {
readonly name: "assets";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "RedeemRequested";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
readonly indexed: true;
}, {
readonly name: "requester";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "earnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "Redeemed";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "earnShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "assets";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "VenueSharesDeposited";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "requestedVenueShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "receivedEngineShares";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "earnShares";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "event";
readonly name: "WithdrewExact";
readonly inputs: readonly [{
readonly name: "caller";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "receiver";
readonly type: "address";
readonly indexed: true;
}, {
readonly name: "assets";
readonly type: "uint256";
readonly indexed: false;
}, {
readonly name: "earnSharesBurned";
readonly type: "uint256";
readonly indexed: false;
}];
readonly anonymous: false;
}, {
readonly type: "error";
readonly name: "ActiveSupplyWithoutBacking";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "AlreadyInitialized";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "DepositsPaused";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "DistributorFeeUpdateNotPending";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "DistributorFeeUpdateNotReady";
readonly inputs: readonly [{
readonly name: "executableAt";
readonly type: "uint40";
}];
}, {
readonly type: "error";
readonly name: "DistributorTransferNotPending";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "DuplicateRequest";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
}];
}, {
readonly type: "error";
readonly name: "EngineAssetMismatch";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "EngineCapabilityUnsupported";
readonly inputs: readonly [{
readonly name: "interfaceId";
readonly type: "bytes4";
}];
}, {
readonly type: "error";
readonly name: "EngineEarnVaultMismatch";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "EngineExitUnsupported";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ExceedsMaxEarnShares";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ExcessiveConversionLoss";
readonly inputs: readonly [{
readonly name: "inputShares";
readonly type: "uint256";
}, {
readonly name: "representedShares";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "ExcessiveMigrationClassificationError";
readonly inputs: readonly [{
readonly name: "expectedManagedAssets";
readonly type: "uint256";
}, {
readonly name: "actualManagedAssets";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "FeeValuationStale";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "FinalizedAssetMismatch";
readonly inputs: readonly [{
readonly name: "finalizedAsset";
readonly type: "address";
}];
}, {
readonly type: "error";
readonly name: "GlobalFeeDisableUnavailable";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "InitialEarnShareSupplyNotZero";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "InsufficientEngineShareSurplus";
readonly inputs: readonly [{
readonly name: "available";
readonly type: "uint256";
}, {
readonly name: "requested";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "InsufficientOutput";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "InvalidDistributorConfiguration";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "InvalidDistributorFeeConfiguration";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "InvalidEarnDecimals";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "InvalidEngineShareScale";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "MaxManagedAssetsExceeded";
readonly inputs: readonly [{
readonly name: "maximum";
readonly type: "uint256";
}, {
readonly name: "actual";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "MinimumAssetsNotMet";
readonly inputs: readonly [{
readonly name: "minimumAssets";
readonly type: "uint256";
}, {
readonly name: "actualAssets";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "MinimumEarnSharesNotMet";
readonly inputs: readonly [{
readonly name: "minimumEarnShares";
readonly type: "uint256";
}, {
readonly name: "actualEarnShares";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "MinimumEngineSharesNotMet";
readonly inputs: readonly [{
readonly name: "minimumEngineShares";
readonly type: "uint256";
}, {
readonly name: "actualEngineShares";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "NoEarnShares";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotDistributor";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotEmergencyGuardianOrOperator";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotEngine";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotOperator";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotPendingDistributor";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "NotRequesterOrJanitor";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "OperatorMigrationDisabled";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "PendingRedeemsOpen";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ReentrantCall";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "RequestNotOpen";
readonly inputs: readonly [{
readonly name: "requestId";
readonly type: "bytes32";
}];
}, {
readonly type: "error";
readonly name: "ResidualBacking";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "RewardRateLimitExceeded";
readonly inputs: readonly [{
readonly name: "normalizedRate";
readonly type: "uint256";
}, {
readonly name: "baselineRate";
readonly type: "uint256";
}];
}, {
readonly type: "error";
readonly name: "SameEngine";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "TokenCallFailed";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "TokenCallFalse";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ZeroAddress";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ZeroAmount";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ZeroMinimumAssets";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ZeroMinimumEarnShares";
readonly inputs: readonly [];
}, {
readonly type: "error";
readonly name: "ZeroMinimumEngineShares";
readonly inputs: readonly [];
}], "WithdrewExact">;
/**
* Estimates gas for an exact withdrawal, assuming enough Earn share allowance.
*
* @param client - Client.
* @param parameters - Parameters.
* @returns The gas estimate.
*/
function estimateGas<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: withdrawExact.Parameters<chain, account>): Promise<bigint>;
/**
* Simulates an exact withdrawal, assuming enough Earn share allowance.
*
* @param client - Client.
* @param parameters - Parameters.
* @returns The simulation result and write request.
*/
function simulate<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: withdrawExact.Parameters<chain, account>): Promise<SimulateContractReturnType<typeof Abis.earnVault, 'withdrawExact'>>;
}
/**
* Withdraws an exact asset amount and returns the confirmed receipt and event data.
*
* @example
* ```ts
* import { createClient, http } from 'viem'
* import { privateKeyToAccount } from 'viem/accounts'
* import { tempoModerato } from 'viem/chains'
* import { Actions } from 'viem/tempo'
*
* const client = createClient({
* account: privateKeyToAccount('0x...'),
* chain: tempoModerato,
* transport: http(),
* })
*
* const { shareAmount } = await Actions.earn.withdrawExactSync(client, {
* assetAmount: 40_000_000n,
* shareAmountMax: 40_200_000n,
* vault: '0x...',
* })
* ```
*
* @param client - Client.
* @param parameters - Parameters.
* @returns The transaction receipt and event data.
*/
export declare function withdrawExactSync<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: withdrawExactSync.Parameters<chain, account>): Promise<withdrawExactSync.ReturnValue>;
export declare namespace withdrawExactSync {
type Args = withdrawExact.Args;
type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = withdrawExact.Parameters<chain, account> & WriteSyncParameters<chain, account>;
type ReturnValue = Compute<{
/** Exact assets received. */
assetAmount: bigint;
/** Withdrawing caller. */
caller: Address;
/** Transaction receipt. */
receipt: TransactionReceipt;
/** Asset recipient. */
recipient: Address;
/** Earn shares burned. */
shareAmount: bigint;
}>;
type ErrorType = BaseErrorType;
}
type MinimumShareAmountParameters = OneOf<{
/** Minimum Earn shares returned to the Zone. */
shareAmountMin: bigint;
} | {
/** Quoted Earn shares returned to the Zone. */
shareAmount: bigint;
/** Slippage tolerance under `shareAmount` (50 = 0.5%). */
slippageBps: number;
}>;
type PrivatePreparationParameters = {
/** Optional caller-supplied correlation id. @default Random bytes32 */
actionId?: Hex.Hex | undefined;
/** Gas reserved for the parent-chain callback. @default `10_000_000n` */
callbackGas?: bigint | undefined;
/** Public recipient if the parent-chain callback fails. @default `tempoRefundRecipient` */
fallbackRecipient?: Address | undefined;
/** Zone gateway address. */
gateway: Address;
/** Source Zone portal on the parent chain. @default Derived from `zoneId` */
portalAddress?: Address | undefined;
/** Encrypted recipient for the returned tokens. */
recipient: Address;
/** Optional memo encrypted with the returned Zone deposit. */
returnMemo?: Hex.Hex | undefined;
/** Refund recipient on the parent chain if the return deposit bounces. */
tempoRefundRecipient: Address;
/** Vault address. */
vault: Address;
/** Optional memo attached to the Zone withdrawal. */
withdrawalMemo?: Hex.Hex | undefined;
/** Source Zone receiving the output. */
zoneId: number;
};
type PreparedZoneRequest = {
/** Correlation id for the matching wait action. */
actionId: Hex.Hex;
/** Withdrawal amount, passed through to the Zone action. */
amount: bigint;
/** Gas reserved for the parent-chain callback. */
callbackGas: bigint;
/** Parent chain containing the gateway. */
chainId: number;
/** Encoded gateway callback. */
data: Hex.Hex;
/** Public recipient if the parent-chain callback fails. */
fallbackRecipient: Address;
/** Parent-chain block before the withdrawal is submitted. */
fromBlock: bigint;
/** Optional memo attached to the Zone withdrawal. */
memo?: Hex.Hex | undefined;
/** Zone gateway receiving the withdrawal. */
to: Address;
/** Token withdrawn from the Zone. */
token: Address;
/** Zone containing the withdrawn tokens. */
zoneId: number;
};
//# sourceMappingURL=earn.d.ts.map