Skip to main content

l1l3Bridger

Classes

Erc20L1L3Bridger

Defined in: assetBridger/l1l3Bridger.ts:370

Bridger for moving ERC20 tokens from L1 to L3

Extends

  • BaseL1L3Bridger

Properties

PropertyModifierTypeDescriptionDefined in
_l1FeeTokenAddressprotectedstring | undefinedIf the L3 network uses a custom fee token, this is the address of that token on L1assetBridger/l1l3Bridger.ts:406
l2ForwarderFactoryDefaultGasLimitreadonlyBigNumberDefault gas limit for L2ForwarderFactory.callForwarder of 1,000,000 Measured Standard: 361746 Measured OnlyGasToken: 220416 Measured NonGasTokenToCustomGas: 373449assetBridger/l1l3Bridger.ts:385
l2GasTokenAddressreadonlystring | undefinedIf the L3 network uses a custom (non-eth) fee token, this is the address of that token on L2assetBridger/l1l3Bridger.ts:398
teleporterreadonlyTeleporterAddresses of teleporter contracts on L2assetBridger/l1l3Bridger.ts:374

Methods

_checkL1Network()
protected _checkL1Network(sop: SignerOrProvider): Promise<void>;

Defined in: assetBridger/l1l3Bridger.ts:306

Check the signer/provider matches the l1Network, throws if not

Parameters
ParameterTypeDescription
sopSignerOrProvider
Returns

Promise<void>

Inherited from
BaseL1L3Bridger._checkL1Network
_checkL2Network()
protected _checkL2Network(sop: SignerOrProvider): Promise<void>;

Defined in: assetBridger/l1l3Bridger.ts:314

Check the signer/provider matches the l2Network, throws if not

Parameters
ParameterTypeDescription
sopSignerOrProvider
Returns

Promise<void>

Inherited from
BaseL1L3Bridger._checkL2Network
_checkL3Network()
protected _checkL3Network(sop: SignerOrProvider): Promise<void>;

Defined in: assetBridger/l1l3Bridger.ts:322

Check the signer/provider matches the l3Network, throws if not

Parameters
ParameterTypeDescription
sopSignerOrProvider
Returns

Promise<void>

Inherited from
BaseL1L3Bridger._checkL3Network
_decodeCallForwarderCalldata()
protected _decodeCallForwarderCalldata(data: string): L2ForwarderParamsStruct;

Defined in: assetBridger/l1l3Bridger.ts:1402

Given raw calldata for a callForwarder call, decode the parameters

Parameters
ParameterType
datastring
Returns

L2ForwarderParamsStruct

_decodeTeleportCalldata()
protected _decodeTeleportCalldata(data: string): TeleportParamsStruct;

Defined in: assetBridger/l1l3Bridger.ts:1388

Given raw calldata for a teleport tx, decode the teleport parameters

Parameters
ParameterType
datastring
Returns

TeleportParamsStruct

_fillPartialTeleportParams()
protected _fillPartialTeleportParams(
partialTeleportParams: OmitTyped<IL1Teleporter.TeleportParamsStruct, "gasParams">,
retryableOverrides: Erc20L1L3DepositRequestRetryableOverrides,
l1Provider: Provider,
l2Provider: Provider,
l3Provider: Provider): Promise<{
costs: [BigNumber, BigNumber, number, RetryableGasCostsStructOutput] & object;
teleportParams: {
amount: BigNumberish;
gasParams: RetryableGasParamsStruct;
l1l2Router: string;
l1Token: string;
l2l3RouterOrInbox: string;
l3FeeTokenL1Addr: string;
to: string;
};
}>;

Defined in: assetBridger/l1l3Bridger.ts:1194

Given TeleportParams without the gas parameters, return TeleportParams with gas parameters populated. Does not modify the input parameters.

Parameters
ParameterType
partialTeleportParamsOmitTyped<IL1Teleporter.TeleportParamsStruct, "gasParams">
retryableOverridesErc20L1L3DepositRequestRetryableOverrides
l1ProviderProvider
l2ProviderProvider
l3ProviderProvider
Returns

Promise<{ costs: [BigNumber, BigNumber, number, RetryableGasCostsStructOutput] & object; teleportParams: { amount: BigNumberish; gasParams: RetryableGasParamsStruct; l1l2Router: string; l1Token: string; l2l3RouterOrInbox: string; l3FeeTokenL1Addr: string; to: string; }; }>

_getL1L2FeeTokenBridgeGasEstimates()
protected _getL1L2FeeTokenBridgeGasEstimates(params: object): Promise<RetryableGasValues>;

Defined in: assetBridger/l1l3Bridger.ts:1056

Estimate the gasLimit and maxSubmissionFee for the L1 to L2 fee token bridge leg of a teleportation

Parameters
ParameterType
params{ feeTokenAmount: BigNumber; l1GasPrice: BigNumber; l1Provider: Provider; l2ForwarderAddress: string; l2Provider: Provider; l3FeeTokenL1Addr: string; }
params.feeTokenAmountBigNumber
params.l1GasPriceBigNumber
params.l1ProviderProvider
params.l2ForwarderAddressstring
params.l2ProviderProvider
params.l3FeeTokenL1Addrstring
Returns

Promise<RetryableGasValues>

_getL1L2TokenBridgeGasEstimates()
protected _getL1L2TokenBridgeGasEstimates(params: object): Promise<RetryableGasValues>;

Defined in: assetBridger/l1l3Bridger.ts:1024

Estimate the gasLimit and maxSubmissionFee for the L1 to L2 token bridge leg of a teleportation

Parameters
ParameterType
params{ amount: BigNumberish; l1GasPrice: BigNumber; l1Provider: Provider; l1Token: string; l2ForwarderAddress: string; l2Provider: Provider; }
params.amountBigNumberish
params.l1GasPriceBigNumber
params.l1ProviderProvider
params.l1Tokenstring
params.l2ForwarderAddressstring
params.l2ProviderProvider
Returns

Promise<RetryableGasValues>

_getL2ForwarderFactoryGasEstimates()
protected _getL2ForwarderFactoryGasEstimates(l1GasPrice: BigNumber, l1Provider: Provider): Promise<RetryableGasValues>;

Defined in: assetBridger/l1l3Bridger.ts:1095

Estimate the gasLimit and maxSubmissionFee for L2ForwarderFactory.callForwarder leg of a teleportation. Gas limit is hardcoded to 1,000,000

Parameters
ParameterType
l1GasPriceBigNumber
l1ProviderProvider
Returns

Promise<RetryableGasValues>

_getL2L3BridgeGasEstimates()
protected _getL2L3BridgeGasEstimates(params: object): Promise<RetryableGasValues>;

Defined in: assetBridger/l1l3Bridger.ts:1117

Estimate the gasLimit and maxSubmissionFee for the L2 -> L3 leg of a teleportation.

Parameters
ParameterType
params{ l1Provider: Provider; l2ForwarderAddress: string; l2GasPrice: BigNumber; l2Provider: Provider; l3Provider: Provider; partialTeleportParams: OmitTyped<IL1Teleporter.TeleportParamsStruct, "gasParams">; }
params.l1ProviderProvider
params.l2ForwarderAddressstring
params.l2GasPriceBigNumber
params.l2ProviderProvider
params.l3ProviderProvider
params.partialTeleportParamsOmitTyped<IL1Teleporter.TeleportParamsStruct, "gasParams">
Returns

Promise<RetryableGasValues>

_getTokenBridgeGasEstimates()
protected _getTokenBridgeGasEstimates(params: object): Promise<RetryableGasValues>;

Defined in: assetBridger/l1l3Bridger.ts:976

Estimate the gasLimit and maxSubmissionFee for a token bridge retryable

Parameters
ParameterType
params{ amount: BigNumber; childProvider: Provider; from: string; isWeth: boolean; parentErc20Address: string; parentGasPrice: BigNumber; parentGatewayAddress: string; parentProvider: Provider; to: string; }
params.amountBigNumber
params.childProviderProvider
params.fromstring
params.isWethboolean
params.parentErc20Addressstring
params.parentGasPriceBigNumber
params.parentGatewayAddressstring
params.parentProviderProvider
params.tostring
Returns

Promise<RetryableGasValues>

_l2ForwarderFactoryCalldataSize()
protected _l2ForwarderFactoryCalldataSize(): number;

Defined in: assetBridger/l1l3Bridger.ts:1366

Returns

number

The size of the calldata for a call to L2ForwarderFactory.callForwarder

approveGasToken()
approveGasToken(params: 
| TxRequestParams
| {
amount?: BigNumber;
l1Signer: Signer;
l2Provider: Provider;
overrides?: Overrides;
}): Promise<ContractTransaction>;

Defined in: assetBridger/l1l3Bridger.ts:701

Approve the L3's fee token for teleportation. The tokens will be approved for L1Teleporter. Will throw if the L3 network uses ETH for fees or the fee token doesn't exist on L1.

Parameters
ParameterType
params| TxRequestParams | { amount?: BigNumber; l1Signer: Signer; l2Provider: Provider; overrides?: Overrides; }
Returns

Promise<ContractTransaction>

approveToken()
approveToken(params: TxRequestParams | TokenApproveParams & object): Promise<ContractTransaction>;

Defined in: assetBridger/l1l3Bridger.ts:659

Approve tokens for teleportation. The tokens will be approved for L1Teleporter.

Parameters
ParameterType
paramsTxRequestParams | TokenApproveParams & object
Returns

Promise<ContractTransaction>

deposit()
deposit(params: TxRequestParams | Erc20L1L3DepositRequestParams & object): Promise<ParentContractCallTransaction>;

Defined in: assetBridger/l1l3Bridger.ts:811

Execute a teleportation of some tokens from L1 to L3.

Parameters
ParameterType
paramsTxRequestParams | Erc20L1L3DepositRequestParams & object
Returns

Promise<ParentContractCallTransaction>

getApproveGasTokenRequest()
getApproveGasTokenRequest(params: object): Promise<Required<Pick<TransactionRequest, "to" | "value" | "data">>>;

Defined in: assetBridger/l1l3Bridger.ts:682

Get a tx request to approve the L3's fee token for teleportation. The tokens will be approved for L1Teleporter. Will throw if the L3 network uses ETH for fees or the fee token doesn't exist on L1.

Parameters
ParameterType
params{ amount?: BigNumber; l1Provider: Provider; l2Provider: Provider; }
params.amount?BigNumber
params.l1ProviderProvider
params.l2ProviderProvider
Returns

Promise<Required<Pick<TransactionRequest, "to" | "value" | "data">>>

getApproveTokenRequest()
getApproveTokenRequest(params: TokenApproveParams): Promise<Required<Pick<TransactionRequest, "to" | "value" | "data">>>;

Defined in: assetBridger/l1l3Bridger.ts:640

Get a tx request to approve tokens for teleportation. The tokens will be approved for L1Teleporter.

Parameters
ParameterType
paramsTokenApproveParams
Returns

Promise<Required<Pick<TransactionRequest, "to" | "value" | "data">>>

getDepositParameters()
getDepositParameters(params: object & TxReference): Promise<{
l2ForwarderAddress: Promise<string>;
l2ForwarderParams: L2ForwarderParamsStruct;
teleportParams: TeleportParamsStruct;
}>;

Defined in: assetBridger/l1l3Bridger.ts:837

Given a teleportation tx, get the L1Teleporter parameters, L2Forwarder parameters, and L2Forwarder address

Parameters
ParameterType
paramsobject & TxReference
Returns

Promise<{ l2ForwarderAddress: Promise<string>; l2ForwarderParams: L2ForwarderParamsStruct; teleportParams: TeleportParamsStruct; }>

getDepositRequest()
getDepositRequest(params: Erc20L1L3DepositRequestParams & 
| {
from: string;
l1Provider: Provider;
}
| {
l1Signer: Signer;
}): Promise<DepositRequestResult>;

Defined in: assetBridger/l1l3Bridger.ts:732

Get a tx request for teleporting some tokens from L1 to L3. Also returns the amount of fee tokens required for teleportation.

Parameters
ParameterType
paramsErc20L1L3DepositRequestParams & | { from: string; l1Provider: Provider; } | { l1Signer: Signer; }
Returns

Promise<DepositRequestResult>

getDepositStatus()
getDepositStatus(params: GetL1L3DepositStatusParams): Promise<Erc20L1L3DepositStatus>;

Defined in: assetBridger/l1l3Bridger.ts:878

Fetch the cross chain messages and their status

Can provide either the txHash, the tx, or the txReceipt

Parameters
ParameterType
paramsGetL1L3DepositStatusParams
Returns

Promise<Erc20L1L3DepositStatus>

getGasTokenOnL1()
getGasTokenOnL1(l1Provider: Provider, l2Provider: Provider): Promise<string>;

Defined in: assetBridger/l1l3Bridger.ts:431

If the L3 network uses a custom gas token, return the address of that token on L1. If the fee token is not available on L1, does not use 18 decimals on L1 and L2, or the L3 network uses ETH for fees, throw.

Parameters
ParameterType
l1ProviderProvider
l2ProviderProvider
Returns

Promise<string>

getL1L2GatewayAddress()
getL1L2GatewayAddress(erc20L1Address: string, l1Provider: Provider): Promise<string>;

Defined in: assetBridger/l1l3Bridger.ts:532

Given an L1 token's address, get the address of the token's L1 <-> L2 gateway on L1

Parameters
ParameterType
erc20L1Addressstring
l1ProviderProvider
Returns

Promise<string>

getL1TokenContract()
getL1TokenContract(l1TokenAddr: string, l1Provider: Provider): IERC20;

Defined in: assetBridger/l1l3Bridger.ts:560

Get the L1 token contract at the provided address Note: This function just returns a typed ethers object for the provided address, it doesn't check the underlying form of the contract bytecode to see if it's an erc20, and doesn't ensure the validity of any of the underlying functions on that contract.

Parameters
ParameterType
l1TokenAddrstring
l1ProviderProvider
Returns

IERC20

getL2Erc20Address()
getL2Erc20Address(erc20L1Address: string, l1Provider: Provider): Promise<string>;

Defined in: assetBridger/l1l3Bridger.ts:508

Get the corresponding L2 token address for the provided L1 token

Parameters
ParameterType
erc20L1Addressstring
l1ProviderProvider
Returns

Promise<string>

getL2L3GatewayAddress()
getL2L3GatewayAddress(
erc20L1Address: string,
l1Provider: Provider,
l2Provider: Provider): Promise<string>;

Defined in: assetBridger/l1l3Bridger.ts:545

Get the address of the L2 <-> L3 gateway on L2 given an L1 token address

Parameters
ParameterType
erc20L1Addressstring
l1ProviderProvider
l2ProviderProvider
Returns

Promise<string>

getL2TokenContract()
getL2TokenContract(l2TokenAddr: string, l2Provider: Provider): L2GatewayToken;

Defined in: assetBridger/l1l3Bridger.ts:570

Get the L2 token contract at the provided address Note: This function just returns a typed ethers object for the provided address, it doesn't check the underlying form of the contract bytecode to see if it's an erc20, and doesn't ensure the validity of any of the underlying functions on that contract.

Parameters
ParameterType
l2TokenAddrstring
l2ProviderProvider
Returns

L2GatewayToken

getL3Erc20Address()
getL3Erc20Address(
erc20L1Address: string,
l1Provider: Provider,
l2Provider: Provider): Promise<string>;

Defined in: assetBridger/l1l3Bridger.ts:518

Get the corresponding L3 token address for the provided L1 token

Parameters
ParameterType
erc20L1Addressstring
l1ProviderProvider
l2ProviderProvider
Returns

Promise<string>

getL3TokenContract()
getL3TokenContract(l3TokenAddr: string, l3Provider: Provider): L2GatewayToken;

Defined in: assetBridger/l1l3Bridger.ts:583

Get the L3 token contract at the provided address Note: This function just returns a typed ethers object for the provided address, it doesn't check the underlying form of the contract bytecode to see if it's an erc20, and doesn't ensure the validity of any of the underlying functions on that contract.

Parameters
ParameterType
l3TokenAddrstring
l3ProviderProvider
Returns

L2GatewayToken

l1TokenIsDisabled()
l1TokenIsDisabled(l1TokenAddress: string, l1Provider: Provider): Promise<boolean>;

Defined in: assetBridger/l1l3Bridger.ts:593

Whether the L1 token has been disabled on the L1 <-> L2 router given an L1 token address

Parameters
ParameterType
l1TokenAddressstring
l1ProviderProvider
Returns

Promise<boolean>

l2ForwarderAddress()
l2ForwarderAddress(
owner: string,
routerOrInbox: string,
destinationAddress: string,
l1OrL2Provider: Provider): Promise<string>;

Defined in: assetBridger/l1l3Bridger.ts:613

Given some L2Forwarder parameters, get the address of the L2Forwarder contract

Parameters
ParameterType
ownerstring
routerOrInboxstring
destinationAddressstring
l1OrL2ProviderProvider
Returns

Promise<string>

l2TokenIsDisabled()
l2TokenIsDisabled(l2TokenAddress: string, l2Provider: Provider): Promise<boolean>;

Defined in: assetBridger/l1l3Bridger.ts:603

Whether the L2 token has been disabled on the L2 <-> L3 router given an L2 token address

Parameters
ParameterType
l2TokenAddressstring
l2ProviderProvider
Returns

Promise<boolean>

teleportationType()
teleportationType(partialTeleportParams: Pick<IL1Teleporter.TeleportParamsStruct, "l3FeeTokenL1Addr" | "l1Token">): TeleportationType;

Defined in: assetBridger/l1l3Bridger.ts:953

Get the type of teleportation from the l1Token and l3FeeTokenL1Addr teleport parameters

Parameters
ParameterType
partialTeleportParamsPick<IL1Teleporter.TeleportParamsStruct, "l3FeeTokenL1Addr" | "l1Token">
Returns

TeleportationType


EthL1L3Bridger

Defined in: assetBridger/l1l3Bridger.ts:1446

Bridge ETH from L1 to L3 using a double retryable ticket

Extends

  • BaseL1L3Bridger

Methods

_checkL1Network()
protected _checkL1Network(sop: SignerOrProvider): Promise<void>;

Defined in: assetBridger/l1l3Bridger.ts:306

Check the signer/provider matches the l1Network, throws if not

Parameters
ParameterTypeDescription
sopSignerOrProvider
Returns

Promise<void>

Inherited from
BaseL1L3Bridger._checkL1Network
_checkL2Network()
protected _checkL2Network(sop: SignerOrProvider): Promise<void>;

Defined in: assetBridger/l1l3Bridger.ts:314

Check the signer/provider matches the l2Network, throws if not

Parameters
ParameterTypeDescription
sopSignerOrProvider
Returns

Promise<void>

Inherited from
BaseL1L3Bridger._checkL2Network
_checkL3Network()
protected _checkL3Network(sop: SignerOrProvider): Promise<void>;

Defined in: assetBridger/l1l3Bridger.ts:322

Check the signer/provider matches the l3Network, throws if not

Parameters
ParameterTypeDescription
sopSignerOrProvider
Returns

Promise<void>

Inherited from
BaseL1L3Bridger._checkL3Network
deposit()
deposit(params: TxRequestParams | EthL1L3DepositRequestParams & object): Promise<ParentContractCallTransaction>;

Defined in: assetBridger/l1l3Bridger.ts:1521

Deposit ETH to L3 via a double retryable ticket

Parameters
ParameterType
paramsTxRequestParams | EthL1L3DepositRequestParams & object
Returns

Promise<ParentContractCallTransaction>

getDepositParameters()
getDepositParameters(params: object & TxReference): Promise<{
l1l2TicketData: RetryableMessageParams;
l2l3TicketData: RetryableMessageParams;
}>;

Defined in: assetBridger/l1l3Bridger.ts:1547

Given an L1 transaction, get the retryable parameters for both l2 and l3 tickets

Parameters
ParameterType
paramsobject & TxReference
Returns

Promise<{ l1l2TicketData: RetryableMessageParams; l2l3TicketData: RetryableMessageParams; }>

getDepositRequest()
getDepositRequest(params: EthL1L3DepositRequestParams & 
| {
from: string;
l1Provider: Provider;
}
| {
l1Signer: Signer;
}): Promise<ParentToChildTransactionRequest>;

Defined in: assetBridger/l1l3Bridger.ts:1463

Get a tx request to deposit ETH to L3 via a double retryable ticket

Parameters
ParameterType
paramsEthL1L3DepositRequestParams & | { from: string; l1Provider: Provider; } | { l1Signer: Signer; }
Returns

Promise<ParentToChildTransactionRequest>

getDepositStatus()
getDepositStatus(params: GetL1L3DepositStatusParams): Promise<EthL1L3DepositStatus>;

Defined in: assetBridger/l1l3Bridger.ts:1577

Get the status of a deposit given an L1 tx receipt. Does not check if the tx is actually a deposit tx.

Parameters
ParameterType
paramsGetL1L3DepositStatusParams
Returns

Promise<EthL1L3DepositStatus>

Information regarding each step of the deposit and EthL1L3DepositStatus.completed which indicates whether the deposit has fully completed.