gitextract_l6jfhm9x/ ├── .eslintignore ├── .eslintrc.js ├── .github/ │ └── workflows/ │ ├── abigen.yml │ ├── pbsol.yml │ └── run_tests.yml ├── .gitignore ├── .prettierrc.json ├── LICENSE ├── README.md ├── benchmark/ │ └── relay.ts ├── contracts/ │ ├── circle-usdc/ │ │ ├── CircleBridgeProxy.sol │ │ ├── CircleBridgeProxyV2.sol │ │ └── FeeOperator.sol │ ├── governed-owner/ │ │ ├── GovernedOwnerProxy.sol │ │ ├── SimpleGovernance.sol │ │ ├── customized/ │ │ │ └── MessageBusOwner.sol │ │ ├── interfaces/ │ │ │ ├── IBridgeOwner.sol │ │ │ ├── ICommonOwner.sol │ │ │ ├── IMessageOwner.sol │ │ │ ├── ISgnOwner.sol │ │ │ └── IUpgradeableOwner.sol │ │ └── proxies/ │ │ ├── BridgeOwnerProxy.sol │ │ ├── CommonOwnerProxy.sol │ │ ├── MessageOwnerProxy.sol │ │ ├── OwnerDataTypes.sol │ │ ├── OwnerProxyBase.sol │ │ ├── SgnOwnerProxy.sol │ │ └── UpgradeableOwnerProxy.sol │ ├── integration-examples/ │ │ ├── ContractAsLP.sol │ │ └── ContractAsSender.sol │ ├── interfaces/ │ │ ├── IBridge.sol │ │ ├── ICircleBridge.sol │ │ ├── IDelayedTransfer.sol │ │ ├── IOriginalTokenVault.sol │ │ ├── IOriginalTokenVaultV2.sol │ │ ├── IPeggedToken.sol │ │ ├── IPeggedTokenBridge.sol │ │ ├── IPeggedTokenBridgeV2.sol │ │ ├── IPeggedTokenBurnFrom.sol │ │ ├── IPool.sol │ │ ├── ISigsVerifier.sol │ │ ├── IUniswapV2.sol │ │ ├── IWETH.sol │ │ └── IWithdrawInbox.sol │ ├── libraries/ │ │ ├── BridgeTransferLib.sol │ │ ├── Pb.sol │ │ ├── PbBridge.sol │ │ ├── PbFarming.sol │ │ ├── PbPegged.sol │ │ ├── PbPool.sol │ │ ├── PbSgn.sol │ │ ├── PbStaking.sol │ │ ├── Utils.sol │ │ └── proto/ │ │ ├── README.md │ │ ├── bridge.proto │ │ ├── farming.proto │ │ ├── pegged.proto │ │ ├── pool.proto │ │ ├── sgn.proto │ │ └── staking.proto │ ├── liquidity-bridge/ │ │ ├── Bridge.sol │ │ ├── FarmingRewards.sol │ │ ├── Pool.sol │ │ ├── Signers.sol │ │ └── WithdrawInbox.sol │ ├── message/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── apps/ │ │ │ ├── RFQ.sol │ │ │ ├── adapter/ │ │ │ │ └── MessageReceiverAdapter.sol │ │ │ ├── examples/ │ │ │ │ ├── BatchTransfer.sol │ │ │ │ ├── MsgExampleBasic.sol │ │ │ │ ├── MsgExampleBasicTransfer.sol │ │ │ │ ├── MsgExampleInOrder.sol │ │ │ │ ├── MsgTest.sol │ │ │ │ ├── TransferSwap.sol │ │ │ │ └── TransferSwapSendBack.sol │ │ │ └── nft-bridge/ │ │ │ ├── MCNNFT.sol │ │ │ ├── NFTBridge.sol │ │ │ ├── OrigNFT.sol │ │ │ └── PegNFT.sol │ │ ├── framework/ │ │ │ ├── MessageApp.sol │ │ │ ├── MessageBusAddress.sol │ │ │ ├── MessageReceiverApp.sol │ │ │ └── MessageSenderApp.sol │ │ ├── interfaces/ │ │ │ ├── IMessageBus.sol │ │ │ └── IMessageReceiverApp.sol │ │ ├── libraries/ │ │ │ ├── MessageSenderLib.sol │ │ │ └── MsgDataTypes.sol │ │ ├── messagebus/ │ │ │ ├── MessageBus.sol │ │ │ ├── MessageBusReceiver.sol │ │ │ └── MessageBusSender.sol │ │ └── safeguard/ │ │ ├── DelayedMessage.sol │ │ └── MessageAppPauser.sol │ ├── miscs/ │ │ ├── Faucet.sol │ │ ├── MintableERC20.sol │ │ ├── oasys/ │ │ │ ├── L1StandardERC20.sol │ │ │ ├── L1StandardERC20Factory.sol │ │ │ └── README.md │ │ └── proxy-admin/ │ │ ├── Ownable.sol │ │ └── ProxyAdmin.sol │ ├── pegged-bridge/ │ │ ├── OriginalTokenVault.sol │ │ ├── OriginalTokenVaultV2.sol │ │ ├── PeggedBrc20Bridge.sol │ │ ├── PeggedTokenBridge.sol │ │ ├── PeggedTokenBridgeV2.sol │ │ ├── README.md │ │ ├── customized/ │ │ │ └── PeggedNativeTokenBridge.sol │ │ └── tokens/ │ │ ├── ERC20Permit/ │ │ │ ├── MintSwapCanonicalTokenPermit.sol │ │ │ ├── MultiBridgeTokenPermit.sol │ │ │ └── SingleBridgeTokenPermit.sol │ │ ├── IntermediaryBridgeToken.sol │ │ ├── IntermediaryOriginalToken.sol │ │ ├── MintSwapCanonicalToken.sol │ │ ├── MintSwapCanonicalTokenUpgradable.sol │ │ ├── MultiBridgeToken.sol │ │ ├── SingleBridgeToken.sol │ │ ├── SwapBridgeToken.sol │ │ ├── WrappedBridgeToken.sol │ │ ├── customized/ │ │ │ ├── CircleBridgeToken.sol │ │ │ ├── FraxBridgeToken.sol │ │ │ ├── MaiBridgeToken.sol │ │ │ ├── OntologyBridgeToken.sol │ │ │ └── xc20/ │ │ │ ├── XC20BridgeHub.sol │ │ │ ├── XC20BridgeToken.sol │ │ │ └── interfaces/ │ │ │ └── IXC20BridgeHub.sol │ │ ├── freezable/ │ │ │ ├── Freezable.sol │ │ │ ├── MintSwapCanonicalTokenFreezable.sol │ │ │ └── MintSwapCanonicalTokenUpgradableFreezable.sol │ │ └── owners/ │ │ └── RestrictedMultiBridgeTokenOwner.sol │ ├── proxy/ │ │ └── TransferAgent.sol │ ├── safeguard/ │ │ ├── DelayedTransfer.sol │ │ ├── Governor.sol │ │ ├── Ownable.sol │ │ ├── Pauser.sol │ │ ├── VolumeControl.sol │ │ ├── Whitelist.sol │ │ └── sentinel/ │ │ ├── Guard.sol │ │ ├── GuardedGovernor.sol │ │ ├── GuardedPauser.sol │ │ └── Sentinel.sol │ ├── staking/ │ │ ├── DataTypes.sol │ │ ├── Govern.sol │ │ ├── SGN.sol │ │ ├── Staking.sol │ │ ├── StakingReward.sol │ │ └── Viewer.sol │ └── test-helpers/ │ ├── DummySwap.sol │ ├── TestERC20.sol │ └── WETH.sol ├── deploy/ │ ├── circle-usdc/ │ │ ├── 000_circle_bridge_proxy.ts │ │ └── 000_circle_bridge_proxy_v2.ts │ ├── core/ │ │ └── 000_sgn_staking.ts │ ├── governed-owner/ │ │ ├── 000_governed_owner.ts │ │ └── customized/ │ │ └── 000_message_bus_owner.ts │ ├── liquidity-bridge/ │ │ ├── 000_bridge.ts │ │ └── 001_farming_rewards.ts │ ├── message/ │ │ ├── 000_message_bus_init.ts │ │ ├── 001_message_bus.ts │ │ └── apps/ │ │ ├── 000_transfer_swap.ts │ │ ├── 001_nft_bridge.ts │ │ ├── 002_peg_nft.ts │ │ ├── 003_orig_nft.ts │ │ ├── 004_mcn_nft.ts │ │ ├── 005_msg_test.ts │ │ ├── 006_rfq.ts │ │ └── 007_adapter.ts │ ├── miscs/ │ │ ├── 000_test_token.ts │ │ ├── 001_faucet.ts │ │ ├── 002_dummy_swap.ts │ │ ├── 003_withdraw_inbox.ts │ │ ├── 004_contract_as_lp.ts │ │ ├── 005_contract_as_sender.ts │ │ ├── 006_transfer_agent.ts │ │ └── 007_default_proxy_admin.ts │ ├── pegged-bridge/ │ │ ├── 000_original_token_vault.ts │ │ ├── 001_pegged_token_bridge.ts │ │ ├── 002_original_token_vault_v2.ts │ │ ├── 003_pegged_token_bridge_v2.ts │ │ ├── 004_pegged_brc20_bridge.ts │ │ ├── customized/ │ │ │ └── 000_pegged_native_token_bridge.ts │ │ └── tokens/ │ │ ├── 000_single_bridge_token.ts │ │ ├── 001_single_bridge_token_permit.ts │ │ ├── 002_multi_bridge_token.ts │ │ ├── 003_multi_bridge_token_permit.ts │ │ ├── 004_mint_swap_canonical_token.ts │ │ ├── 005_mint_swap_canonical_token_permit.ts │ │ ├── 006_mint_swap_canonical_token_upgradable.ts │ │ ├── 007_wrapped_bridge_token.ts │ │ ├── 008_intermediary_bridge_token.ts │ │ ├── 009_intermediary_original_token.ts │ │ ├── 010_circle_bridge_token.ts │ │ ├── customized/ │ │ │ ├── 000_frax_bridge_token.ts │ │ │ ├── 001_mai_bridge_token.ts │ │ │ └── 002_ontology_bridge_token.ts │ │ ├── freezable/ │ │ │ ├── 000_mint_swap_canonical_token_upgradable_freezable.ts │ │ │ └── 001_mint_swap_canonical_token_freezable.ts │ │ └── owners/ │ │ └── 000_restricted_multi_bridge_token_owner.ts │ └── sentinel/ │ ├── 000_sentinel.ts │ └── 001_sentinel_zksync.ts ├── hardhat.config.ts ├── import-sorter.json ├── package.json ├── reports/ │ ├── contract_sizes.txt │ └── gas_usage/ │ ├── relay.txt │ └── summary.txt ├── scripts/ │ ├── common.ts │ ├── init_governed_owner.ts │ ├── oasys_token_factory.ts │ ├── pb_gen_sol.sh │ ├── reset_signers.ts │ ├── sentinel/ │ │ ├── sentinel_guard.ts │ │ ├── sentinel_relax.ts │ │ └── sentinel_set_limits.ts │ ├── set_basics.ts │ ├── set_limits.ts │ ├── set_msg_fee.ts │ ├── solc_abigen.sh │ ├── solt.sh │ ├── transfer_ownership.ts │ └── update_bridge_supply_cap.ts ├── test/ │ ├── Basics.spec.ts │ ├── Bridge.spec.ts │ ├── FarmingRewards.spec.ts │ ├── Governance.spec.ts │ ├── GovernedOwner.spec.ts │ ├── Message.spec.ts │ ├── MultiValidator.spec.ts │ ├── Sentinel.spec.ts │ ├── Slash.spec.ts │ ├── StakingReward.spec.ts │ ├── TransferSwap.spec.ts │ ├── ValidatorSigner.spec.ts │ └── lib/ │ ├── common.ts │ ├── constants.ts │ └── proto.ts └── tsconfig.json