Skip to content

@lelantos-org/sdk / advanced / ViemChainAdapter

Class: ViemChainAdapter ​

Defined in: @lelantos-org/sdk/dist/chain/viem/index.d.ts:11

A reader that also holds a signing key.

Every member added here either signs as the user's EOA or spends its gas: shielding moves public tokens out of an address that must both custody them and pay for the transaction. Narrow with supportsSigning before using any of them.

Extends ​

Implements ​

Constructors ​

Constructor ​

ts
new ViemChainAdapter(opts): ViemChainAdapter;

Defined in: @lelantos-org/sdk/dist/chain/viem/index.d.ts:14

Parameters ​

ParameterType
optsViemChainAdapterOpts

Returns ​

ViemChainAdapter

Overrides ​

ViemChainReader.constructor

Properties ​

_maspAddress ​

ts
protected readonly _maspAddress: EvmAddress;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:35

Inherited from ​

ViemChainReader._maspAddress


_nativeAdapterAddress? ​

ts
protected readonly optional _nativeAdapterAddress?: EvmAddress;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:37

Inherited from ​

ViemChainReader._nativeAdapterAddress


_permit2Address ​

ts
protected readonly _permit2Address: EvmAddress;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:36

Inherited from ​

ViemChainReader._permit2Address


publicClient ​

ts
readonly publicClient: object;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:33

viem's PublicClient. Its members are viem's own and are documented there, not here.

Inherited from ​

ViemChainReader.publicClient


readCtx ​

ts
protected readonly readCtx: ViemReadCtx;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:34

Inherited from ​

ViemChainReader.readCtx


signer ​

ts
readonly signer: EthSigner;

Defined in: @lelantos-org/sdk/dist/chain/viem/index.d.ts:12

Methods ​

blockNumber() ​

ts
blockNumber(): Promise<number>;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:42

Current chain tip. Feeds SelectOpts.tipBlock, without which the selector's spend cooldown is inert. The request names no address and no topic. Optional.

Returns ​

Promise<number>

Implementation of ​

ChainAdapter.blockNumber

Inherited from ​

ViemChainReader.blockNumber


cancelDelay() ​

ts
cancelDelay(): Promise<number>;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:47

Blocks, in the EVM's block.number, after submittedAt before cancelDeposit is allowed. Optional.

Returns ​

Promise<number>

Implementation of ​

ChainAdapter.cancelDelay

Inherited from ​

ViemChainReader.cancelDelay


cancelDeposit() ​

ts
cancelDeposit(id, inputs): Promise<CancelDepositReceipt>;

Defined in: @lelantos-org/sdk/dist/chain/viem/index.d.ts:42

MASP.cancelDeposit. The on-chain digest check rejects tampered preimages. Resolves once mined, with the refund split read off DepositCanceled. Optional.

Parameters ​

ParameterType
idbigint
inputsCancelDepositInputs

Returns ​

Promise<CancelDepositReceipt>

Implementation of ​

ChainAdapter.cancelDeposit


cancelDepositNative() ​

ts
cancelDepositNative(id, inputs): Promise<CancelDepositReceipt>;

Defined in: @lelantos-org/sdk/dist/chain/viem/index.d.ts:43

NativeAdapter.cancelNative: the only way to settle an adapter-owned escrow by refund, since the pool would return the coin to the adapter. No payer: the adapter supplies its own. Optional.

Parameters ​

ParameterType
idbigint
inputsOmit<CancelDepositInputs, "payer">

Returns ​

Promise<CancelDepositReceipt>

Implementation of ​

ChainAdapter.cancelDepositNative


chainId() ​

ts
chainId(): Promise<bigint>;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:41

Returns ​

Promise<bigint>

Implementation of ​

ChainAdapter.chainId

Inherited from ​

ViemChainReader.chainId


fetchAsset() ​

ts
fetchAsset(id): Promise<AssetEntry>;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:44

The registry entry with its yield fields.

Parameters ​

ParameterType
idAssetId

Returns ​

Promise<AssetEntry>

Implementation of ​

ChainAdapter.fetchAsset

Inherited from ​

ViemChainReader.fetchAsset


fetchDepositEscrowed() ​

ts
fetchDepositEscrowed(id, fromBlock?): Promise<
  | DepositEscrowedRecord
| null>;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:46

The decoded DepositEscrowed log for escrow id, or null when none is found from fromBlock (default: an adapter-chosen recent window) to the tip. cancelDeposit({ depositId }) rebuilds its cancel inputs from it. Optional.

Parameters ​

ParameterType
idbigint
fromBlock?bigint

Returns ​

Promise< | DepositEscrowedRecord | null>

Implementation of ​

ChainAdapter.fetchDepositEscrowed

Inherited from ​

ViemChainReader.fetchDepositEscrowed


fetchNotePayload() ​

ts
fetchNotePayload(txHash, cm): Promise<PublishedNote | null>;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:57

The decoded NotePayload the pool emitted for commitment cm in mined transaction txHash, or null when that transaction carries none from the pool. A payment proof needs the output's published clue, ephPub and ciphertext. Optional.

A transaction the node holds no receipt for (unknown, or not yet mined) is "not found": resolve null without waiting for it. verifyPaymentProof passes a hash from a proof it has not checked, and reports null as not-published. Reject only when the node could not be asked, so an RPC failure is not read as "no such payment".

Parameters ​

ParameterType
txHashHex32
cmHex32

Returns ​

Promise<PublishedNote | null>

Implementation of ​

ChainAdapter.fetchNotePayload

Inherited from ​

ViemChainReader.fetchNotePayload


getEscrowed() ​

ts
getEscrowed(id): Promise<EscrowedDepositView | null>;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:45

MASP.escrowed(id); null if flushed or cancelled. Optional.

Parameters ​

ParameterType
idbigint

Returns ​

Promise<EscrowedDepositView | null>

Implementation of ​

ChainAdapter.getEscrowed

Inherited from ​

ViemChainReader.getEscrowed


isKnownRoot() ​

ts
isKnownRoot(root): Promise<boolean>;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:48

Whether the pool would accept a proof against root, from the ring of recent roots it keeps. Authoritative; the commitment mirror approximates it. Optional: without it the mirror decides.

Parameters ​

ParameterType
rootbigint

Returns ​

Promise<boolean>

Implementation of ​

ts
ChainAdapter.isKnownRoot

Inherited from ​

ViemChainReader.isKnownRoot


maspAddress() ​

ts
maspAddress(): Promise<EvmAddress>;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:67

Used as the Permit2 spender.

Returns ​

Promise<EvmAddress>

Implementation of ​

ChainAdapter.maspAddress

Inherited from ​

ViemChainReader.maspAddress


nameAvailable() ​

ts
nameAvailable(registrar, label): Promise<boolean>;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:71

Whether label is valid and unregistered.

Parameters ​

ParameterType
registrarEvmAddress
labelstring

Returns ​

Promise<boolean>

Implementation of ​

ChainAdapter.nameAvailable

Inherited from ​

ViemChainReader.nameAvailable


nameFee() ​

ts
nameFee(registrar): Promise<NameFee>;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:72

Parameters ​

ParameterType
registrarEvmAddress

Returns ​

Promise<NameFee>

Implementation of ​

ChainAdapter.nameFee

Inherited from ​

ViemChainReader.nameFee


nameRecord() ​

ts
nameRecord(registrar, label): Promise<NameRecord>;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:70

Parameters ​

ParameterType
registrarEvmAddress
labelstring

Returns ​

Promise<NameRecord>

Implementation of ​

ChainAdapter.nameRecord

Inherited from ​

ViemChainReader.nameRecord


nativeAdapterAddress() ​

ts
nativeAdapterAddress(): EvmAddress | undefined;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:69

undefined when no NativeAdapter is configured for this chain.

Returns ​

EvmAddress | undefined

Implementation of ​

ChainAdapter.nativeAdapterAddress

Inherited from ​

ViemChainReader.nativeAdapterAddress


nativeBalance() ​

ts
nativeBalance(account): Promise<bigint>;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:58

Wei. Optional.

Parameters ​

ParameterType
accountEvmAddress

Returns ​

Promise<bigint>

Implementation of ​

ChainAdapter.nativeBalance

Inherited from ​

ViemChainReader.nativeBalance


payerAddress() ​

ts
payerAddress(): Promise<EvmAddress>;

Defined in: @lelantos-org/sdk/dist/chain/viem/index.d.ts:15

The signer's address; pi.payer for a deposit.

Returns ​

Promise<EvmAddress>

Implementation of ​

ChainAdapter.payerAddress


permit2Address() ​

ts
permit2Address(): EvmAddress;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:66

Optional: omitted by adapters that do not use Permit2.

Returns ​

EvmAddress

Implementation of ​

ChainAdapter.permit2Address

Inherited from ​

ViemChainReader.permit2Address


permit2Allowance() ​

ts
permit2Allowance(
   tok, 
   owner, 
   spender
): Promise<{
  amount: TokenAmount;
  expiration: number;
  nonce: number;
}>;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:59

IAllowanceTransfer.allowance: cap, expiry, nonce. Optional.

Parameters ​

ParameterType
tokEvmAddress
ownerEvmAddress
spenderEvmAddress

Returns ​

Promise<{ amount: TokenAmount; expiration: number; nonce: number; }>

Implementation of ​

ChainAdapter.permit2Allowance

Inherited from ​

ViemChainReader.permit2Allowance


permit2Nonce() ​

ts
permit2Nonce(): Promise<bigint>;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:65

Permit2 nonces are caller-chosen and unordered, so a random u256 suffices.

Returns ​

Promise<bigint>

Implementation of ​

ChainAdapter.permit2Nonce

Inherited from ​

ViemChainReader.permit2Nonce


permit2PermitAllowance() ​

ts
permit2PermitAllowance(args, onTxHash?): Promise<{
  txHash: Hex32;
}>;

Defined in: @lelantos-org/sdk/dist/chain/viem/index.d.ts:48

Submit pre-signed PermitSingle via IAllowanceTransfer.permit. Anyone can submit; relayer-gasless variants may override. Optional.

Parameters ​

ParameterType
args{ owner: EvmAddress; permit: PermitSingle; signature: string; }
args.ownerEvmAddress
args.permit?PermitSingle
args.signature?string
onTxHash?(hash) => void

Returns ​

Promise<{ txHash: Hex32; }>

Implementation of ​

ChainAdapter.permit2PermitAllowance


permit2PermitAllowanceBatch() ​

ts
permit2PermitAllowanceBatch(args, onTxHash?): Promise<{
  txHash: Hex32;
}>;

Defined in: @lelantos-org/sdk/dist/chain/viem/index.d.ts:58

Submit a pre-signed PermitBatch via the permit overload taking an array; one tx establishes N token windows. Optional.

Parameters ​

ParameterType
args{ owner: EvmAddress; permit: PermitBatch; signature: string; }
args.ownerEvmAddress
args.permit?PermitBatch
args.signature?string
onTxHash?(hash) => void

Returns ​

Promise<{ txHash: Hex32; }>

Implementation of ​

ChainAdapter.permit2PermitAllowanceBatch


signPermit2() ​

ts
signPermit2(args): Promise<Permit2Sig>;

Defined in: @lelantos-org/sdk/dist/chain/viem/index.d.ts:44

Sign a Permit2 witness transfer bound to piHash = keccak256(abi.encode(DepositRequest, aux, feeAux)).

PermitWitnessTransferFrom over token alone, or, when args.feeToken is set, PermitBatchWitnessTransferFrom over [token, feeToken]. The returned maxFee is 0n for the former.

Parameters ​

ParameterType
argsPermit2SignArgs

Returns ​

Promise<Permit2Sig>

Implementation of ​

ChainAdapter.signPermit2


signPermit2Allowance() ​

ts
signPermit2Allowance(permit): Promise<{
  signature: string;
}>;

Defined in: @lelantos-org/sdk/dist/chain/viem/index.d.ts:45

Sign PermitSingle for AllowanceTransfer-mode deposits. Optional.

Parameters ​

ParameterType
permitPermitSingle

Returns ​

Promise<{ signature: string; }>

Implementation of ​

ChainAdapter.signPermit2Allowance


signPermit2AllowanceBatch() ​

ts
signPermit2AllowanceBatch(permit): Promise<{
  signature: string;
}>;

Defined in: @lelantos-org/sdk/dist/chain/viem/index.d.ts:55

Sign one PermitBatch covering N tokens. Optional.

Parameters ​

ParameterType
permitPermitBatch

Returns ​

Promise<{ signature: string; }>

Implementation of ​

ChainAdapter.signPermit2AllowanceBatch


submitDeposit() ​

ts
submitDeposit(args): Promise<DepositSubmitted>;

Defined in: @lelantos-org/sdk/dist/chain/viem/index.d.ts:22

MASP.deposit(d, sig, aux, feeAux). Resolves once mined, with the hash, block and DepositEscrowed payload from the receipt. Optional: omitted by relayer-broadcast adapters.

Parameters ​

ParameterType
args{ aux: AuxOutput; deposit: DepositRequest; feeAux: AuxOutput; onSent?: (txHash) => void; permit2: Permit2Sig; }
args.auxAuxOutput
args.depositDepositRequest
args.feeAuxAuxOutput
args.onSent?(txHash) => void
args.permit2Permit2Sig

Returns ​

Promise<DepositSubmitted>

Implementation of ​

ChainAdapter.submitDeposit


submitDepositAuthorized() ​

ts
submitDepositAuthorized(args): Promise<DepositSubmitted>;

Defined in: @lelantos-org/sdk/dist/chain/viem/index.d.ts:36

MASP.depositAuthorized. Pulls via Permit2 AllowanceTransfer against an already-signed window; no per-deposit sig. Optional.

Parameters ​

ParameterType
args{ aux: AuxOutput; deposit: DepositRequest; feeAux: AuxOutput; onSent?: (txHash) => void; }
args.auxAuxOutput
args.depositDepositRequest
args.feeAuxAuxOutput
args.onSent?(txHash) => void

Returns ​

Promise<DepositSubmitted>

Implementation of ​

ChainAdapter.submitDepositAuthorized


submitDepositNative() ​

ts
submitDepositNative(args): Promise<DepositSubmitted>;

Defined in: @lelantos-org/sdk/dist/chain/viem/index.d.ts:29

NativeAdapter.depositNative with msg.value = value. The pool is ERC-20 only, so the adapter wraps the coin, escrows it under its own name and returns the excess; deposit.payer must therefore be the adapter, not the sender. Asset id must be WETH-registered. Optional, and unavailable on a chain with no adapter deployed.

Parameters ​

ParameterType
args{ aux: AuxOutput; deposit: DepositRequest; feeAux: AuxOutput; onSent?: (txHash) => void; value: bigint; }
args.auxAuxOutput
args.depositDepositRequest
args.feeAuxAuxOutput
args.onSent?(txHash) => void
args.valuebigint

Returns ​

Promise<DepositSubmitted>

Implementation of ​

ChainAdapter.submitDepositNative


tokenAllowance() ​

ts
tokenAllowance(
   a, 
   owner, 
   spender
): Promise<TokenAmount>;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:51

Parameters ​

ParameterType
aEvmAddress
ownerEvmAddress
spenderEvmAddress

Returns ​

Promise<TokenAmount>

Implementation of ​

ChainAdapter.tokenAllowance

Inherited from ​

ViemChainReader.tokenAllowance


tokenApprove() ​

ts
tokenApprove(
   a, 
   spender, 
   amount, 
   onTxHash?
): Promise<{
  txHash: Hex32;
}>;

Defined in: @lelantos-org/sdk/dist/chain/viem/index.d.ts:16

Parameters ​

ParameterType
aEvmAddress
spenderEvmAddress
amountTokenAmount
onTxHash?(hash) => void

Returns ​

Promise<{ txHash: Hex32; }>

Implementation of ​

ChainAdapter.tokenApprove


tokenBalanceOf() ​

ts
tokenBalanceOf(a, account): Promise<TokenAmount>;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:50

Parameters ​

ParameterType
aEvmAddress
accountEvmAddress

Returns ​

Promise<TokenAmount>

Implementation of ​

ChainAdapter.tokenBalanceOf

Inherited from ​

ViemChainReader.tokenBalanceOf


tokenMeta() ​

ts
tokenMeta(a): Promise<TokenMeta>;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:49

Optional; callers feature-check before calling.

Parameters ​

ParameterType
aEvmAddress

Returns ​

Promise<TokenMeta>

Implementation of ​

ChainAdapter.tokenMeta

Inherited from ​

ViemChainReader.tokenMeta


txReceiptLogs() ​

ts
txReceiptLogs(txHash): Promise<readonly TxLog[]>;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:56

Every log of a mined transaction's receipt, in receipt order.

Read after a relayed spend to find the wallet's own operation in a transaction the relayer may have bundled with others', and by a payment proof to find an output's slot. Only the hash is sent; matching against the wallet's commitments happens locally. Optional: without it a spend result carries no operation and paymentProof is unsupported.

Its callers pass a hash they have reason to believe mined, so an implementation may wait briefly for a node that lags, and rejects when no receipt arrives. A transaction the node does not know is not an empty list.

Parameters ​

ParameterType
txHashHex32

Returns ​

Promise<readonly TxLog[]>

Implementation of ​

ChainAdapter.txReceiptLogs

Inherited from ​

ViemChainReader.txReceiptLogs


waitTxReceipt() ​

ts
waitTxReceipt(txHash, confirmations?): Promise<{
  blockNumber: number;
  status: number;
}>;

Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:52

Block number and receipt status (1 = success, 0 = revert).

Parameters ​

ParameterType
txHashHex32
confirmations?number

Returns ​

Promise<{ blockNumber: number; status: number; }>

Implementation of ​

ChainAdapter.waitTxReceipt

Inherited from ​

ViemChainReader.waitTxReceipt


wrapNative() ​

ts
wrapNative(wethAddr, value): Promise<{
  txHash: Hex32;
}>;

Defined in: @lelantos-org/sdk/dist/chain/viem/index.d.ts:19

WETH9.deposit{value}. Optional.

Parameters ​

ParameterType
wethAddrEvmAddress
valuebigint

Returns ​

Promise<{ txHash: Hex32; }>

Implementation of ​

ChainAdapter.wrapNative