Files
FrenoCorp/node_modules/viem/zksync/utils/assertEip712Transaction.ts
Michael Freno 7c684a42cc FRE-600: Fix code review blockers
- Consolidated duplicate UndoManagers to single instance
- Fixed connection promise to only resolve on 'connected' status
- Fixed WebSocketProvider import (WebsocketProvider)
- Added proper doc.destroy() cleanup
- Renamed isPresenceInitialized property to avoid conflict

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-25 00:08:01 -04:00

37 lines
1.4 KiB
TypeScript

import { InvalidAddressError } from '../../errors/address.js'
import { BaseError } from '../../errors/base.js'
import { InvalidChainIdError } from '../../errors/chain.js'
import type { ExactPartial } from '../../types/utils.js'
import { isAddress } from '../../utils/address/isAddress.js'
import { InvalidEip712TransactionError } from '../errors/transaction.js'
import type {
ZksyncTransactionSerializable,
ZksyncTransactionSerializableEIP712,
} from '../types/transaction.js'
import { isEIP712Transaction } from './isEip712Transaction.js'
export function assertEip712Transaction(
transaction: ExactPartial<ZksyncTransactionSerializable>,
) {
const { chainId, to, from, paymaster, paymasterInput } =
transaction as ZksyncTransactionSerializableEIP712
if (!isEIP712Transaction(transaction))
throw new InvalidEip712TransactionError()
if (!chainId || chainId <= 0) throw new InvalidChainIdError({ chainId })
if (to && !isAddress(to)) throw new InvalidAddressError({ address: to })
if (from && !isAddress(from)) throw new InvalidAddressError({ address: from })
if (paymaster && !isAddress(paymaster))
throw new InvalidAddressError({ address: paymaster })
if (paymaster && !paymasterInput) {
throw new BaseError(
'`paymasterInput` must be provided when `paymaster` is defined',
)
}
if (!paymaster && paymasterInput) {
throw new BaseError(
'`paymaster` must be provided when `paymasterInput` is defined',
)
}
}