import type { Account, Address, Chain, ContractFunctionArgs, Hex, Transport, WalletClient, WriteContractReturnType } from 'viem'; import { type RawOrContractAddress } from '../../../types/addresses.js'; import type { L1WriteActionBaseType } from '../../../types/l1Actions.js'; export declare const ABI: readonly [{ readonly stateMutability: "nonpayable"; readonly type: "constructor"; readonly inputs: readonly []; }, { readonly type: "event"; readonly anonymous: false; readonly inputs: readonly [{ readonly name: "version"; readonly internalType: "uint8"; readonly type: "uint8"; readonly indexed: false; }]; readonly name: "Initialized"; }, { readonly type: "event"; readonly anonymous: false; readonly inputs: readonly [{ readonly name: "account"; readonly internalType: "address"; readonly type: "address"; readonly indexed: false; }]; readonly name: "Paused"; }, { readonly type: "event"; readonly anonymous: false; readonly inputs: readonly [{ readonly name: "from"; readonly internalType: "address"; readonly type: "address"; readonly indexed: true; }, { readonly name: "to"; readonly internalType: "address"; readonly type: "address"; readonly indexed: true; }, { readonly name: "version"; readonly internalType: "uint256"; readonly type: "uint256"; readonly indexed: true; }, { readonly name: "opaqueData"; readonly internalType: "bytes"; readonly type: "bytes"; readonly indexed: false; }]; readonly name: "TransactionDeposited"; }, { readonly type: "event"; readonly anonymous: false; readonly inputs: readonly [{ readonly name: "account"; readonly internalType: "address"; readonly type: "address"; readonly indexed: false; }]; readonly name: "Unpaused"; }, { readonly type: "event"; readonly anonymous: false; readonly inputs: readonly [{ readonly name: "withdrawalHash"; readonly internalType: "bytes32"; readonly type: "bytes32"; readonly indexed: true; }, { readonly name: "success"; readonly internalType: "bool"; readonly type: "bool"; readonly indexed: false; }]; readonly name: "WithdrawalFinalized"; }, { readonly type: "event"; readonly anonymous: false; readonly inputs: readonly [{ readonly name: "withdrawalHash"; readonly internalType: "bytes32"; readonly type: "bytes32"; readonly indexed: true; }, { readonly name: "from"; readonly internalType: "address"; readonly type: "address"; readonly indexed: true; }, { readonly name: "to"; readonly internalType: "address"; readonly type: "address"; readonly indexed: true; }]; readonly name: "WithdrawalProven"; }, { readonly stateMutability: "view"; readonly type: "function"; readonly inputs: readonly []; readonly name: "GUARDIAN"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "address"; readonly type: "address"; }]; }, { readonly stateMutability: "view"; readonly type: "function"; readonly inputs: readonly []; readonly name: "L2_ORACLE"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "contract L2OutputOracle"; readonly type: "address"; }]; }, { readonly stateMutability: "view"; readonly type: "function"; readonly inputs: readonly []; readonly name: "SYSTEM_CONFIG"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "contract SystemConfig"; readonly type: "address"; }]; }, { readonly stateMutability: "payable"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "_to"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "_value"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "_gasLimit"; readonly internalType: "uint64"; readonly type: "uint64"; }, { readonly name: "_isCreation"; readonly internalType: "bool"; readonly type: "bool"; }, { readonly name: "_data"; readonly internalType: "bytes"; readonly type: "bytes"; }]; readonly name: "depositTransaction"; readonly outputs: readonly []; }, { readonly stateMutability: "payable"; readonly type: "function"; readonly inputs: readonly []; readonly name: "donateETH"; readonly outputs: readonly []; }, { readonly stateMutability: "nonpayable"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "_tx"; readonly internalType: "struct Types.WithdrawalTransaction"; readonly type: "tuple"; readonly components: readonly [{ readonly name: "nonce"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "sender"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "target"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "value"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "gasLimit"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "data"; readonly internalType: "bytes"; readonly type: "bytes"; }]; }]; readonly name: "finalizeWithdrawalTransaction"; readonly outputs: readonly []; }, { readonly stateMutability: "view"; readonly type: "function"; readonly inputs: readonly [{ readonly name: ""; readonly internalType: "bytes32"; readonly type: "bytes32"; }]; readonly name: "finalizedWithdrawals"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "bool"; readonly type: "bool"; }]; }, { readonly stateMutability: "view"; readonly type: "function"; readonly inputs: readonly []; readonly name: "guardian"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "address"; readonly type: "address"; }]; }, { readonly stateMutability: "nonpayable"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "_l2Oracle"; readonly internalType: "contract L2OutputOracle"; readonly type: "address"; }, { readonly name: "_guardian"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "_systemConfig"; readonly internalType: "contract SystemConfig"; readonly type: "address"; }, { readonly name: "_paused"; readonly internalType: "bool"; readonly type: "bool"; }]; readonly name: "initialize"; readonly outputs: readonly []; }, { readonly stateMutability: "view"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "_l2OutputIndex"; readonly internalType: "uint256"; readonly type: "uint256"; }]; readonly name: "isOutputFinalized"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "bool"; readonly type: "bool"; }]; }, { readonly stateMutability: "view"; readonly type: "function"; readonly inputs: readonly []; readonly name: "l2Oracle"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "contract L2OutputOracle"; readonly type: "address"; }]; }, { readonly stateMutability: "view"; readonly type: "function"; readonly inputs: readonly []; readonly name: "l2Sender"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "address"; readonly type: "address"; }]; }, { readonly stateMutability: "pure"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "_byteCount"; readonly internalType: "uint64"; readonly type: "uint64"; }]; readonly name: "minimumGasLimit"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "uint64"; readonly type: "uint64"; }]; }, { readonly stateMutability: "view"; readonly type: "function"; readonly inputs: readonly []; readonly name: "params"; readonly outputs: readonly [{ readonly name: "prevBaseFee"; readonly internalType: "uint128"; readonly type: "uint128"; }, { readonly name: "prevBoughtGas"; readonly internalType: "uint64"; readonly type: "uint64"; }, { readonly name: "prevBlockNum"; readonly internalType: "uint64"; readonly type: "uint64"; }]; }, { readonly stateMutability: "nonpayable"; readonly type: "function"; readonly inputs: readonly []; readonly name: "pause"; readonly outputs: readonly []; }, { readonly stateMutability: "view"; readonly type: "function"; readonly inputs: readonly []; readonly name: "paused"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "bool"; readonly type: "bool"; }]; }, { readonly stateMutability: "nonpayable"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "_tx"; readonly internalType: "struct Types.WithdrawalTransaction"; readonly type: "tuple"; readonly components: readonly [{ readonly name: "nonce"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "sender"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "target"; readonly internalType: "address"; readonly type: "address"; }, { readonly name: "value"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "gasLimit"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "data"; readonly internalType: "bytes"; readonly type: "bytes"; }]; }, { readonly name: "_l2OutputIndex"; readonly internalType: "uint256"; readonly type: "uint256"; }, { readonly name: "_outputRootProof"; readonly internalType: "struct Types.OutputRootProof"; readonly type: "tuple"; readonly components: readonly [{ readonly name: "version"; readonly internalType: "bytes32"; readonly type: "bytes32"; }, { readonly name: "stateRoot"; readonly internalType: "bytes32"; readonly type: "bytes32"; }, { readonly name: "messagePasserStorageRoot"; readonly internalType: "bytes32"; readonly type: "bytes32"; }, { readonly name: "latestBlockhash"; readonly internalType: "bytes32"; readonly type: "bytes32"; }]; }, { readonly name: "_withdrawalProof"; readonly internalType: "bytes[]"; readonly type: "bytes[]"; }]; readonly name: "proveWithdrawalTransaction"; readonly outputs: readonly []; }, { readonly stateMutability: "view"; readonly type: "function"; readonly inputs: readonly [{ readonly name: ""; readonly internalType: "bytes32"; readonly type: "bytes32"; }]; readonly name: "provenWithdrawals"; readonly outputs: readonly [{ readonly name: "outputRoot"; readonly internalType: "bytes32"; readonly type: "bytes32"; }, { readonly name: "timestamp"; readonly internalType: "uint128"; readonly type: "uint128"; }, { readonly name: "l2OutputIndex"; readonly internalType: "uint128"; readonly type: "uint128"; }]; }, { readonly stateMutability: "view"; readonly type: "function"; readonly inputs: readonly []; readonly name: "systemConfig"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "contract SystemConfig"; readonly type: "address"; }]; }, { readonly stateMutability: "nonpayable"; readonly type: "function"; readonly inputs: readonly []; readonly name: "unpause"; readonly outputs: readonly []; }, { readonly stateMutability: "view"; readonly type: "function"; readonly inputs: readonly []; readonly name: "version"; readonly outputs: readonly [{ readonly name: ""; readonly internalType: "string"; readonly type: "string"; }]; }, { readonly stateMutability: "payable"; readonly type: "receive"; }]; export declare const FUNCTION = "depositTransaction"; export type DepositTransactionParameters = { to: Address; gasLimit: bigint; value?: bigint; isCreation?: boolean; data?: Hex; mint?: bigint; }; export type WriteDepositTransactionParameters = { args: DepositTransactionParameters; portal: RawOrContractAddress; } & Omit, TChain, TAccount, TChainOverride>, 'value'>; /** * Calls depositTransaction on the OptimismPortal contract. * * Unlike writeSendMessage, does not offer replayability on L2 incase the L2 tx fails. * But has the advantage that, if the caller is an EOA, msg.sender of the L2 tx * will be the caller address. Allowing users to fully tranasact on L2 from L1, which * is a critical security property. * * If the caller is not an EOA, e.g. if the caller is a smart contract wallet, * msg.sender on L2 will be alias of the caller address * https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/L1/OptimismPortal.sol#L407 * * @param parameters - {@link WriteDepositTransactionParameters} * @returns A [Transaction Hash](https://viem.sh/docs/glossary/terms.html#hash). {@link WriteContractReturnType} */ export declare function writeDepositTransaction(client: WalletClient, { args: { to, value, gasLimit, isCreation, data, mint }, portal, ...rest }: WriteDepositTransactionParameters): Promise; //# sourceMappingURL=writeDepositTransaction.d.ts.map