@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
new ViemChainAdapter(opts): ViemChainAdapter;Defined in: @lelantos-org/sdk/dist/chain/viem/index.d.ts:14
Parameters
| Parameter | Type |
|---|---|
opts | ViemChainAdapterOpts |
Returns
ViemChainAdapter
Overrides
Properties
_maspAddress
protected readonly _maspAddress: EvmAddress;Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:35
Inherited from
_nativeAdapterAddress?
protected readonly optional _nativeAdapterAddress?: EvmAddress;Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:37
Inherited from
ViemChainReader._nativeAdapterAddress
_permit2Address
protected readonly _permit2Address: EvmAddress;Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:36
Inherited from
ViemChainReader._permit2Address
publicClient
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
readCtx
protected readonly readCtx: ViemReadCtx;Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:34
Inherited from
signer
readonly signer: EthSigner;Defined in: @lelantos-org/sdk/dist/chain/viem/index.d.ts:12
Methods
blockNumber()
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
Inherited from
cancelDelay()
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
Inherited from
cancelDeposit()
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
| Parameter | Type |
|---|---|
id | bigint |
inputs | CancelDepositInputs |
Returns
Promise<CancelDepositReceipt>
Implementation of
cancelDepositNative()
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
| Parameter | Type |
|---|---|
id | bigint |
inputs | Omit<CancelDepositInputs, "payer"> |
Returns
Promise<CancelDepositReceipt>
Implementation of
ChainAdapter.cancelDepositNative
chainId()
chainId(): Promise<bigint>;Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:41
Returns
Promise<bigint>
Implementation of
Inherited from
fetchAsset()
fetchAsset(id): Promise<AssetEntry>;Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:44
The registry entry with its yield fields.
Parameters
| Parameter | Type |
|---|---|
id | AssetId |
Returns
Promise<AssetEntry>
Implementation of
Inherited from
fetchDepositEscrowed()
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
| Parameter | Type |
|---|---|
id | bigint |
fromBlock? | bigint |
Returns
Promise< | DepositEscrowedRecord | null>
Implementation of
ChainAdapter.fetchDepositEscrowed
Inherited from
ViemChainReader.fetchDepositEscrowed
fetchNotePayload()
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
| Parameter | Type |
|---|---|
txHash | Hex32 |
cm | Hex32 |
Returns
Promise<PublishedNote | null>
Implementation of
Inherited from
ViemChainReader.fetchNotePayload
getEscrowed()
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
| Parameter | Type |
|---|---|
id | bigint |
Returns
Promise<EscrowedDepositView | null>
Implementation of
Inherited from
isKnownRoot()
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
| Parameter | Type |
|---|---|
root | bigint |
Returns
Promise<boolean>
Implementation of
ChainAdapter.isKnownRootInherited from
maspAddress()
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
Inherited from
nameAvailable()
nameAvailable(registrar, label): Promise<boolean>;Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:71
Whether label is valid and unregistered.
Parameters
| Parameter | Type |
|---|---|
registrar | EvmAddress |
label | string |
Returns
Promise<boolean>
Implementation of
Inherited from
nameFee()
nameFee(registrar): Promise<NameFee>;Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:72
Parameters
| Parameter | Type |
|---|---|
registrar | EvmAddress |
Returns
Promise<NameFee>
Implementation of
Inherited from
nameRecord()
nameRecord(registrar, label): Promise<NameRecord>;Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:70
Parameters
| Parameter | Type |
|---|---|
registrar | EvmAddress |
label | string |
Returns
Promise<NameRecord>
Implementation of
Inherited from
nativeAdapterAddress()
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()
nativeBalance(account): Promise<bigint>;Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:58
Wei. Optional.
Parameters
| Parameter | Type |
|---|---|
account | EvmAddress |
Returns
Promise<bigint>
Implementation of
Inherited from
payerAddress()
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
permit2Address()
permit2Address(): EvmAddress;Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:66
Optional: omitted by adapters that do not use Permit2.
Returns
Implementation of
Inherited from
ViemChainReader.permit2Address
permit2Allowance()
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
| Parameter | Type |
|---|---|
tok | EvmAddress |
owner | EvmAddress |
spender | EvmAddress |
Returns
Promise<{ amount: TokenAmount; expiration: number; nonce: number; }>
Implementation of
Inherited from
ViemChainReader.permit2Allowance
permit2Nonce()
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
Inherited from
permit2PermitAllowance()
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
| Parameter | Type |
|---|---|
args | { owner: EvmAddress; permit: PermitSingle; signature: string; } |
args.owner | EvmAddress |
args.permit? | PermitSingle |
args.signature? | string |
onTxHash? | (hash) => void |
Returns
Promise<{ txHash: Hex32; }>
Implementation of
ChainAdapter.permit2PermitAllowance
permit2PermitAllowanceBatch()
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
| Parameter | Type |
|---|---|
args | { owner: EvmAddress; permit: PermitBatch; signature: string; } |
args.owner | EvmAddress |
args.permit? | PermitBatch |
args.signature? | string |
onTxHash? | (hash) => void |
Returns
Promise<{ txHash: Hex32; }>
Implementation of
ChainAdapter.permit2PermitAllowanceBatch
signPermit2()
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
| Parameter | Type |
|---|---|
args | Permit2SignArgs |
Returns
Promise<Permit2Sig>
Implementation of
signPermit2Allowance()
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
| Parameter | Type |
|---|---|
permit | PermitSingle |
Returns
Promise<{ signature: string; }>
Implementation of
ChainAdapter.signPermit2Allowance
signPermit2AllowanceBatch()
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
| Parameter | Type |
|---|---|
permit | PermitBatch |
Returns
Promise<{ signature: string; }>
Implementation of
ChainAdapter.signPermit2AllowanceBatch
submitDeposit()
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
| Parameter | Type |
|---|---|
args | { aux: AuxOutput; deposit: DepositRequest; feeAux: AuxOutput; onSent?: (txHash) => void; permit2: Permit2Sig; } |
args.aux | AuxOutput |
args.deposit | DepositRequest |
args.feeAux | AuxOutput |
args.onSent? | (txHash) => void |
args.permit2 | Permit2Sig |
Returns
Promise<DepositSubmitted>
Implementation of
submitDepositAuthorized()
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
| Parameter | Type |
|---|---|
args | { aux: AuxOutput; deposit: DepositRequest; feeAux: AuxOutput; onSent?: (txHash) => void; } |
args.aux | AuxOutput |
args.deposit | DepositRequest |
args.feeAux | AuxOutput |
args.onSent? | (txHash) => void |
Returns
Promise<DepositSubmitted>
Implementation of
ChainAdapter.submitDepositAuthorized
submitDepositNative()
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
| Parameter | Type |
|---|---|
args | { aux: AuxOutput; deposit: DepositRequest; feeAux: AuxOutput; onSent?: (txHash) => void; value: bigint; } |
args.aux | AuxOutput |
args.deposit | DepositRequest |
args.feeAux | AuxOutput |
args.onSent? | (txHash) => void |
args.value | bigint |
Returns
Promise<DepositSubmitted>
Implementation of
ChainAdapter.submitDepositNative
tokenAllowance()
tokenAllowance(
a,
owner,
spender
): Promise<TokenAmount>;Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:51
Parameters
| Parameter | Type |
|---|---|
a | EvmAddress |
owner | EvmAddress |
spender | EvmAddress |
Returns
Promise<TokenAmount>
Implementation of
Inherited from
ViemChainReader.tokenAllowance
tokenApprove()
tokenApprove(
a,
spender,
amount,
onTxHash?
): Promise<{
txHash: Hex32;
}>;Defined in: @lelantos-org/sdk/dist/chain/viem/index.d.ts:16
Parameters
| Parameter | Type |
|---|---|
a | EvmAddress |
spender | EvmAddress |
amount | TokenAmount |
onTxHash? | (hash) => void |
Returns
Promise<{ txHash: Hex32; }>
Implementation of
tokenBalanceOf()
tokenBalanceOf(a, account): Promise<TokenAmount>;Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:50
Parameters
| Parameter | Type |
|---|---|
a | EvmAddress |
account | EvmAddress |
Returns
Promise<TokenAmount>
Implementation of
Inherited from
ViemChainReader.tokenBalanceOf
tokenMeta()
tokenMeta(a): Promise<TokenMeta>;Defined in: @lelantos-org/sdk/dist/chain/viem/reader.d.ts:49
Optional; callers feature-check before calling.
Parameters
| Parameter | Type |
|---|---|
a | EvmAddress |
Returns
Promise<TokenMeta>
Implementation of
Inherited from
txReceiptLogs()
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
| Parameter | Type |
|---|---|
txHash | Hex32 |
Returns
Promise<readonly TxLog[]>
Implementation of
Inherited from
waitTxReceipt()
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
| Parameter | Type |
|---|---|
txHash | Hex32 |
confirmations? | number |
Returns
Promise<{ blockNumber: number; status: number; }>
Implementation of
Inherited from
wrapNative()
wrapNative(wethAddr, value): Promise<{
txHash: Hex32;
}>;Defined in: @lelantos-org/sdk/dist/chain/viem/index.d.ts:19
WETH9.deposit{value}. Optional.
Parameters
| Parameter | Type |
|---|---|
wethAddr | EvmAddress |
value | bigint |
Returns
Promise<{ txHash: Hex32; }>