/ src / modules / bridge / OffRamp.json
OffRamp.json
   1  [
   2      {
   3        "type": "constructor",
   4        "inputs": [
   5          {
   6            "name": "staticConfig",
   7            "type": "tuple",
   8            "internalType": "struct EVM2EVMOffRamp.StaticConfig",
   9            "components": [
  10              {
  11                "name": "commitStore",
  12                "type": "address",
  13                "internalType": "address"
  14              },
  15              {
  16                "name": "chainSelector",
  17                "type": "uint64",
  18                "internalType": "uint64"
  19              },
  20              {
  21                "name": "sourceChainSelector",
  22                "type": "uint64",
  23                "internalType": "uint64"
  24              },
  25              { "name": "onRamp", "type": "address", "internalType": "address" },
  26              {
  27                "name": "prevOffRamp",
  28                "type": "address",
  29                "internalType": "address"
  30              },
  31              { "name": "armProxy", "type": "address", "internalType": "address" }
  32            ]
  33          },
  34          {
  35            "name": "sourceTokens",
  36            "type": "address[]",
  37            "internalType": "contract IERC20[]"
  38          },
  39          {
  40            "name": "pools",
  41            "type": "address[]",
  42            "internalType": "contract IPool[]"
  43          },
  44          {
  45            "name": "rateLimiterConfig",
  46            "type": "tuple",
  47            "internalType": "struct RateLimiter.Config",
  48            "components": [
  49              { "name": "isEnabled", "type": "bool", "internalType": "bool" },
  50              {
  51                "name": "capacity",
  52                "type": "uint128",
  53                "internalType": "uint128"
  54              },
  55              { "name": "rate", "type": "uint128", "internalType": "uint128" }
  56            ]
  57          }
  58        ],
  59        "stateMutability": "nonpayable"
  60      },
  61      {
  62        "type": "function",
  63        "name": "acceptOwnership",
  64        "inputs": [],
  65        "outputs": [],
  66        "stateMutability": "nonpayable"
  67      },
  68      {
  69        "type": "function",
  70        "name": "applyPoolUpdates",
  71        "inputs": [
  72          {
  73            "name": "removes",
  74            "type": "tuple[]",
  75            "internalType": "struct Internal.PoolUpdate[]",
  76            "components": [
  77              { "name": "token", "type": "address", "internalType": "address" },
  78              { "name": "pool", "type": "address", "internalType": "address" }
  79            ]
  80          },
  81          {
  82            "name": "adds",
  83            "type": "tuple[]",
  84            "internalType": "struct Internal.PoolUpdate[]",
  85            "components": [
  86              { "name": "token", "type": "address", "internalType": "address" },
  87              { "name": "pool", "type": "address", "internalType": "address" }
  88            ]
  89          }
  90        ],
  91        "outputs": [],
  92        "stateMutability": "nonpayable"
  93      },
  94      {
  95        "type": "function",
  96        "name": "ccipReceive",
  97        "inputs": [
  98          {
  99            "name": "",
 100            "type": "tuple",
 101            "internalType": "struct Client.Any2EVMMessage",
 102            "components": [
 103              {
 104                "name": "messageId",
 105                "type": "bytes32",
 106                "internalType": "bytes32"
 107              },
 108              {
 109                "name": "sourceChainSelector",
 110                "type": "uint64",
 111                "internalType": "uint64"
 112              },
 113              { "name": "sender", "type": "bytes", "internalType": "bytes" },
 114              { "name": "data", "type": "bytes", "internalType": "bytes" },
 115              {
 116                "name": "destTokenAmounts",
 117                "type": "tuple[]",
 118                "internalType": "struct Client.EVMTokenAmount[]",
 119                "components": [
 120                  {
 121                    "name": "token",
 122                    "type": "address",
 123                    "internalType": "address"
 124                  },
 125                  {
 126                    "name": "amount",
 127                    "type": "uint256",
 128                    "internalType": "uint256"
 129                  }
 130                ]
 131              }
 132            ]
 133          }
 134        ],
 135        "outputs": [],
 136        "stateMutability": "pure"
 137      },
 138      {
 139        "type": "function",
 140        "name": "currentRateLimiterState",
 141        "inputs": [],
 142        "outputs": [
 143          {
 144            "name": "",
 145            "type": "tuple",
 146            "internalType": "struct RateLimiter.TokenBucket",
 147            "components": [
 148              { "name": "tokens", "type": "uint128", "internalType": "uint128" },
 149              {
 150                "name": "lastUpdated",
 151                "type": "uint32",
 152                "internalType": "uint32"
 153              },
 154              { "name": "isEnabled", "type": "bool", "internalType": "bool" },
 155              {
 156                "name": "capacity",
 157                "type": "uint128",
 158                "internalType": "uint128"
 159              },
 160              { "name": "rate", "type": "uint128", "internalType": "uint128" }
 161            ]
 162          }
 163        ],
 164        "stateMutability": "view"
 165      },
 166      {
 167        "type": "function",
 168        "name": "executeSingleMessage",
 169        "inputs": [
 170          {
 171            "name": "message",
 172            "type": "tuple",
 173            "internalType": "struct Internal.EVM2EVMMessage",
 174            "components": [
 175              {
 176                "name": "sourceChainSelector",
 177                "type": "uint64",
 178                "internalType": "uint64"
 179              },
 180              { "name": "sender", "type": "address", "internalType": "address" },
 181              {
 182                "name": "receiver",
 183                "type": "address",
 184                "internalType": "address"
 185              },
 186              {
 187                "name": "sequenceNumber",
 188                "type": "uint64",
 189                "internalType": "uint64"
 190              },
 191              {
 192                "name": "gasLimit",
 193                "type": "uint256",
 194                "internalType": "uint256"
 195              },
 196              { "name": "strict", "type": "bool", "internalType": "bool" },
 197              { "name": "nonce", "type": "uint64", "internalType": "uint64" },
 198              {
 199                "name": "feeToken",
 200                "type": "address",
 201                "internalType": "address"
 202              },
 203              {
 204                "name": "feeTokenAmount",
 205                "type": "uint256",
 206                "internalType": "uint256"
 207              },
 208              { "name": "data", "type": "bytes", "internalType": "bytes" },
 209              {
 210                "name": "tokenAmounts",
 211                "type": "tuple[]",
 212                "internalType": "struct Client.EVMTokenAmount[]",
 213                "components": [
 214                  {
 215                    "name": "token",
 216                    "type": "address",
 217                    "internalType": "address"
 218                  },
 219                  {
 220                    "name": "amount",
 221                    "type": "uint256",
 222                    "internalType": "uint256"
 223                  }
 224                ]
 225              },
 226              {
 227                "name": "sourceTokenData",
 228                "type": "bytes[]",
 229                "internalType": "bytes[]"
 230              },
 231              {
 232                "name": "messageId",
 233                "type": "bytes32",
 234                "internalType": "bytes32"
 235              }
 236            ]
 237          },
 238          {
 239            "name": "offchainTokenData",
 240            "type": "bytes[]",
 241            "internalType": "bytes[]"
 242          }
 243        ],
 244        "outputs": [],
 245        "stateMutability": "nonpayable"
 246      },
 247      {
 248        "type": "function",
 249        "name": "getDestinationToken",
 250        "inputs": [
 251          {
 252            "name": "sourceToken",
 253            "type": "address",
 254            "internalType": "contract IERC20"
 255          }
 256        ],
 257        "outputs": [
 258          { "name": "", "type": "address", "internalType": "contract IERC20" }
 259        ],
 260        "stateMutability": "view"
 261      },
 262      {
 263        "type": "function",
 264        "name": "getDestinationTokens",
 265        "inputs": [],
 266        "outputs": [
 267          {
 268            "name": "destTokens",
 269            "type": "address[]",
 270            "internalType": "contract IERC20[]"
 271          }
 272        ],
 273        "stateMutability": "view"
 274      },
 275      {
 276        "type": "function",
 277        "name": "getDynamicConfig",
 278        "inputs": [],
 279        "outputs": [
 280          {
 281            "name": "",
 282            "type": "tuple",
 283            "internalType": "struct EVM2EVMOffRamp.DynamicConfig",
 284            "components": [
 285              {
 286                "name": "permissionLessExecutionThresholdSeconds",
 287                "type": "uint32",
 288                "internalType": "uint32"
 289              },
 290              { "name": "router", "type": "address", "internalType": "address" },
 291              {
 292                "name": "priceRegistry",
 293                "type": "address",
 294                "internalType": "address"
 295              },
 296              {
 297                "name": "maxNumberOfTokensPerMsg",
 298                "type": "uint16",
 299                "internalType": "uint16"
 300              },
 301              {
 302                "name": "maxDataBytes",
 303                "type": "uint32",
 304                "internalType": "uint32"
 305              },
 306              {
 307                "name": "maxPoolReleaseOrMintGas",
 308                "type": "uint32",
 309                "internalType": "uint32"
 310              }
 311            ]
 312          }
 313        ],
 314        "stateMutability": "view"
 315      },
 316      {
 317        "type": "function",
 318        "name": "getExecutionState",
 319        "inputs": [
 320          { "name": "sequenceNumber", "type": "uint64", "internalType": "uint64" }
 321        ],
 322        "outputs": [
 323          {
 324            "name": "",
 325            "type": "uint8",
 326            "internalType": "enum Internal.MessageExecutionState"
 327          }
 328        ],
 329        "stateMutability": "view"
 330      },
 331      {
 332        "type": "function",
 333        "name": "getPoolByDestToken",
 334        "inputs": [
 335          {
 336            "name": "destToken",
 337            "type": "address",
 338            "internalType": "contract IERC20"
 339          }
 340        ],
 341        "outputs": [
 342          { "name": "", "type": "address", "internalType": "contract IPool" }
 343        ],
 344        "stateMutability": "view"
 345      },
 346      {
 347        "type": "function",
 348        "name": "getPoolBySourceToken",
 349        "inputs": [
 350          {
 351            "name": "sourceToken",
 352            "type": "address",
 353            "internalType": "contract IERC20"
 354          }
 355        ],
 356        "outputs": [
 357          { "name": "", "type": "address", "internalType": "contract IPool" }
 358        ],
 359        "stateMutability": "view"
 360      },
 361      {
 362        "type": "function",
 363        "name": "getSenderNonce",
 364        "inputs": [
 365          { "name": "sender", "type": "address", "internalType": "address" }
 366        ],
 367        "outputs": [
 368          { "name": "nonce", "type": "uint64", "internalType": "uint64" }
 369        ],
 370        "stateMutability": "view"
 371      },
 372      {
 373        "type": "function",
 374        "name": "getStaticConfig",
 375        "inputs": [],
 376        "outputs": [
 377          {
 378            "name": "",
 379            "type": "tuple",
 380            "internalType": "struct EVM2EVMOffRamp.StaticConfig",
 381            "components": [
 382              {
 383                "name": "commitStore",
 384                "type": "address",
 385                "internalType": "address"
 386              },
 387              {
 388                "name": "chainSelector",
 389                "type": "uint64",
 390                "internalType": "uint64"
 391              },
 392              {
 393                "name": "sourceChainSelector",
 394                "type": "uint64",
 395                "internalType": "uint64"
 396              },
 397              { "name": "onRamp", "type": "address", "internalType": "address" },
 398              {
 399                "name": "prevOffRamp",
 400                "type": "address",
 401                "internalType": "address"
 402              },
 403              { "name": "armProxy", "type": "address", "internalType": "address" }
 404            ]
 405          }
 406        ],
 407        "stateMutability": "view"
 408      },
 409      {
 410        "type": "function",
 411        "name": "getSupportedTokens",
 412        "inputs": [],
 413        "outputs": [
 414          {
 415            "name": "sourceTokens",
 416            "type": "address[]",
 417            "internalType": "contract IERC20[]"
 418          }
 419        ],
 420        "stateMutability": "view"
 421      },
 422      {
 423        "type": "function",
 424        "name": "getTokenLimitAdmin",
 425        "inputs": [],
 426        "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
 427        "stateMutability": "view"
 428      },
 429      {
 430        "type": "function",
 431        "name": "getTransmitters",
 432        "inputs": [],
 433        "outputs": [
 434          { "name": "", "type": "address[]", "internalType": "address[]" }
 435        ],
 436        "stateMutability": "view"
 437      },
 438      {
 439        "type": "function",
 440        "name": "latestConfigDetails",
 441        "inputs": [],
 442        "outputs": [
 443          { "name": "configCount", "type": "uint32", "internalType": "uint32" },
 444          { "name": "blockNumber", "type": "uint32", "internalType": "uint32" },
 445          { "name": "configDigest", "type": "bytes32", "internalType": "bytes32" }
 446        ],
 447        "stateMutability": "view"
 448      },
 449      {
 450        "type": "function",
 451        "name": "latestConfigDigestAndEpoch",
 452        "inputs": [],
 453        "outputs": [
 454          { "name": "scanLogs", "type": "bool", "internalType": "bool" },
 455          {
 456            "name": "configDigest",
 457            "type": "bytes32",
 458            "internalType": "bytes32"
 459          },
 460          { "name": "epoch", "type": "uint32", "internalType": "uint32" }
 461        ],
 462        "stateMutability": "view"
 463      },
 464      {
 465        "type": "function",
 466        "name": "manuallyExecute",
 467        "inputs": [
 468          {
 469            "name": "report",
 470            "type": "tuple",
 471            "internalType": "struct Internal.ExecutionReport",
 472            "components": [
 473              {
 474                "name": "messages",
 475                "type": "tuple[]",
 476                "internalType": "struct Internal.EVM2EVMMessage[]",
 477                "components": [
 478                  {
 479                    "name": "sourceChainSelector",
 480                    "type": "uint64",
 481                    "internalType": "uint64"
 482                  },
 483                  {
 484                    "name": "sender",
 485                    "type": "address",
 486                    "internalType": "address"
 487                  },
 488                  {
 489                    "name": "receiver",
 490                    "type": "address",
 491                    "internalType": "address"
 492                  },
 493                  {
 494                    "name": "sequenceNumber",
 495                    "type": "uint64",
 496                    "internalType": "uint64"
 497                  },
 498                  {
 499                    "name": "gasLimit",
 500                    "type": "uint256",
 501                    "internalType": "uint256"
 502                  },
 503                  { "name": "strict", "type": "bool", "internalType": "bool" },
 504                  { "name": "nonce", "type": "uint64", "internalType": "uint64" },
 505                  {
 506                    "name": "feeToken",
 507                    "type": "address",
 508                    "internalType": "address"
 509                  },
 510                  {
 511                    "name": "feeTokenAmount",
 512                    "type": "uint256",
 513                    "internalType": "uint256"
 514                  },
 515                  { "name": "data", "type": "bytes", "internalType": "bytes" },
 516                  {
 517                    "name": "tokenAmounts",
 518                    "type": "tuple[]",
 519                    "internalType": "struct Client.EVMTokenAmount[]",
 520                    "components": [
 521                      {
 522                        "name": "token",
 523                        "type": "address",
 524                        "internalType": "address"
 525                      },
 526                      {
 527                        "name": "amount",
 528                        "type": "uint256",
 529                        "internalType": "uint256"
 530                      }
 531                    ]
 532                  },
 533                  {
 534                    "name": "sourceTokenData",
 535                    "type": "bytes[]",
 536                    "internalType": "bytes[]"
 537                  },
 538                  {
 539                    "name": "messageId",
 540                    "type": "bytes32",
 541                    "internalType": "bytes32"
 542                  }
 543                ]
 544              },
 545              {
 546                "name": "offchainTokenData",
 547                "type": "bytes[][]",
 548                "internalType": "bytes[][]"
 549              },
 550              {
 551                "name": "proofs",
 552                "type": "bytes32[]",
 553                "internalType": "bytes32[]"
 554              },
 555              {
 556                "name": "proofFlagBits",
 557                "type": "uint256",
 558                "internalType": "uint256"
 559              }
 560            ]
 561          },
 562          {
 563            "name": "gasLimitOverrides",
 564            "type": "uint256[]",
 565            "internalType": "uint256[]"
 566          }
 567        ],
 568        "outputs": [],
 569        "stateMutability": "nonpayable"
 570      },
 571      {
 572        "type": "function",
 573        "name": "owner",
 574        "inputs": [],
 575        "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
 576        "stateMutability": "view"
 577      },
 578      {
 579        "type": "function",
 580        "name": "setAdmin",
 581        "inputs": [
 582          { "name": "newAdmin", "type": "address", "internalType": "address" }
 583        ],
 584        "outputs": [],
 585        "stateMutability": "nonpayable"
 586      },
 587      {
 588        "type": "function",
 589        "name": "setOCR2Config",
 590        "inputs": [
 591          { "name": "signers", "type": "address[]", "internalType": "address[]" },
 592          {
 593            "name": "transmitters",
 594            "type": "address[]",
 595            "internalType": "address[]"
 596          },
 597          { "name": "f", "type": "uint8", "internalType": "uint8" },
 598          { "name": "onchainConfig", "type": "bytes", "internalType": "bytes" },
 599          {
 600            "name": "offchainConfigVersion",
 601            "type": "uint64",
 602            "internalType": "uint64"
 603          },
 604          { "name": "offchainConfig", "type": "bytes", "internalType": "bytes" }
 605        ],
 606        "outputs": [],
 607        "stateMutability": "nonpayable"
 608      },
 609      {
 610        "type": "function",
 611        "name": "setRateLimiterConfig",
 612        "inputs": [
 613          {
 614            "name": "config",
 615            "type": "tuple",
 616            "internalType": "struct RateLimiter.Config",
 617            "components": [
 618              { "name": "isEnabled", "type": "bool", "internalType": "bool" },
 619              {
 620                "name": "capacity",
 621                "type": "uint128",
 622                "internalType": "uint128"
 623              },
 624              { "name": "rate", "type": "uint128", "internalType": "uint128" }
 625            ]
 626          }
 627        ],
 628        "outputs": [],
 629        "stateMutability": "nonpayable"
 630      },
 631      {
 632        "type": "function",
 633        "name": "transferOwnership",
 634        "inputs": [{ "name": "to", "type": "address", "internalType": "address" }],
 635        "outputs": [],
 636        "stateMutability": "nonpayable"
 637      },
 638      {
 639        "type": "function",
 640        "name": "transmit",
 641        "inputs": [
 642          {
 643            "name": "reportContext",
 644            "type": "bytes32[3]",
 645            "internalType": "bytes32[3]"
 646          },
 647          { "name": "report", "type": "bytes", "internalType": "bytes" },
 648          { "name": "rs", "type": "bytes32[]", "internalType": "bytes32[]" },
 649          { "name": "ss", "type": "bytes32[]", "internalType": "bytes32[]" },
 650          { "name": "", "type": "bytes32", "internalType": "bytes32" }
 651        ],
 652        "outputs": [],
 653        "stateMutability": "nonpayable"
 654      },
 655      {
 656        "type": "function",
 657        "name": "typeAndVersion",
 658        "inputs": [],
 659        "outputs": [{ "name": "", "type": "string", "internalType": "string" }],
 660        "stateMutability": "view"
 661      },
 662      {
 663        "type": "event",
 664        "name": "AdminSet",
 665        "inputs": [
 666          {
 667            "name": "newAdmin",
 668            "type": "address",
 669            "indexed": false,
 670            "internalType": "address"
 671          }
 672        ],
 673        "anonymous": false
 674      },
 675      {
 676        "type": "event",
 677        "name": "ConfigSet",
 678        "inputs": [
 679          {
 680            "name": "staticConfig",
 681            "type": "tuple",
 682            "indexed": false,
 683            "internalType": "struct EVM2EVMOffRamp.StaticConfig",
 684            "components": [
 685              {
 686                "name": "commitStore",
 687                "type": "address",
 688                "internalType": "address"
 689              },
 690              {
 691                "name": "chainSelector",
 692                "type": "uint64",
 693                "internalType": "uint64"
 694              },
 695              {
 696                "name": "sourceChainSelector",
 697                "type": "uint64",
 698                "internalType": "uint64"
 699              },
 700              { "name": "onRamp", "type": "address", "internalType": "address" },
 701              {
 702                "name": "prevOffRamp",
 703                "type": "address",
 704                "internalType": "address"
 705              },
 706              { "name": "armProxy", "type": "address", "internalType": "address" }
 707            ]
 708          },
 709          {
 710            "name": "dynamicConfig",
 711            "type": "tuple",
 712            "indexed": false,
 713            "internalType": "struct EVM2EVMOffRamp.DynamicConfig",
 714            "components": [
 715              {
 716                "name": "permissionLessExecutionThresholdSeconds",
 717                "type": "uint32",
 718                "internalType": "uint32"
 719              },
 720              { "name": "router", "type": "address", "internalType": "address" },
 721              {
 722                "name": "priceRegistry",
 723                "type": "address",
 724                "internalType": "address"
 725              },
 726              {
 727                "name": "maxNumberOfTokensPerMsg",
 728                "type": "uint16",
 729                "internalType": "uint16"
 730              },
 731              {
 732                "name": "maxDataBytes",
 733                "type": "uint32",
 734                "internalType": "uint32"
 735              },
 736              {
 737                "name": "maxPoolReleaseOrMintGas",
 738                "type": "uint32",
 739                "internalType": "uint32"
 740              }
 741            ]
 742          }
 743        ],
 744        "anonymous": false
 745      },
 746      {
 747        "type": "event",
 748        "name": "ConfigSet",
 749        "inputs": [
 750          {
 751            "name": "previousConfigBlockNumber",
 752            "type": "uint32",
 753            "indexed": false,
 754            "internalType": "uint32"
 755          },
 756          {
 757            "name": "configDigest",
 758            "type": "bytes32",
 759            "indexed": false,
 760            "internalType": "bytes32"
 761          },
 762          {
 763            "name": "configCount",
 764            "type": "uint64",
 765            "indexed": false,
 766            "internalType": "uint64"
 767          },
 768          {
 769            "name": "signers",
 770            "type": "address[]",
 771            "indexed": false,
 772            "internalType": "address[]"
 773          },
 774          {
 775            "name": "transmitters",
 776            "type": "address[]",
 777            "indexed": false,
 778            "internalType": "address[]"
 779          },
 780          {
 781            "name": "f",
 782            "type": "uint8",
 783            "indexed": false,
 784            "internalType": "uint8"
 785          },
 786          {
 787            "name": "onchainConfig",
 788            "type": "bytes",
 789            "indexed": false,
 790            "internalType": "bytes"
 791          },
 792          {
 793            "name": "offchainConfigVersion",
 794            "type": "uint64",
 795            "indexed": false,
 796            "internalType": "uint64"
 797          },
 798          {
 799            "name": "offchainConfig",
 800            "type": "bytes",
 801            "indexed": false,
 802            "internalType": "bytes"
 803          }
 804        ],
 805        "anonymous": false
 806      },
 807      {
 808        "type": "event",
 809        "name": "ExecutionStateChanged",
 810        "inputs": [
 811          {
 812            "name": "sequenceNumber",
 813            "type": "uint64",
 814            "indexed": true,
 815            "internalType": "uint64"
 816          },
 817          {
 818            "name": "messageId",
 819            "type": "bytes32",
 820            "indexed": true,
 821            "internalType": "bytes32"
 822          },
 823          {
 824            "name": "state",
 825            "type": "uint8",
 826            "indexed": false,
 827            "internalType": "enum Internal.MessageExecutionState"
 828          },
 829          {
 830            "name": "returnData",
 831            "type": "bytes",
 832            "indexed": false,
 833            "internalType": "bytes"
 834          }
 835        ],
 836        "anonymous": false
 837      },
 838      {
 839        "type": "event",
 840        "name": "OwnershipTransferRequested",
 841        "inputs": [
 842          {
 843            "name": "from",
 844            "type": "address",
 845            "indexed": true,
 846            "internalType": "address"
 847          },
 848          {
 849            "name": "to",
 850            "type": "address",
 851            "indexed": true,
 852            "internalType": "address"
 853          }
 854        ],
 855        "anonymous": false
 856      },
 857      {
 858        "type": "event",
 859        "name": "OwnershipTransferred",
 860        "inputs": [
 861          {
 862            "name": "from",
 863            "type": "address",
 864            "indexed": true,
 865            "internalType": "address"
 866          },
 867          {
 868            "name": "to",
 869            "type": "address",
 870            "indexed": true,
 871            "internalType": "address"
 872          }
 873        ],
 874        "anonymous": false
 875      },
 876      {
 877        "type": "event",
 878        "name": "PoolAdded",
 879        "inputs": [
 880          {
 881            "name": "token",
 882            "type": "address",
 883            "indexed": false,
 884            "internalType": "address"
 885          },
 886          {
 887            "name": "pool",
 888            "type": "address",
 889            "indexed": false,
 890            "internalType": "address"
 891          }
 892        ],
 893        "anonymous": false
 894      },
 895      {
 896        "type": "event",
 897        "name": "PoolRemoved",
 898        "inputs": [
 899          {
 900            "name": "token",
 901            "type": "address",
 902            "indexed": false,
 903            "internalType": "address"
 904          },
 905          {
 906            "name": "pool",
 907            "type": "address",
 908            "indexed": false,
 909            "internalType": "address"
 910          }
 911        ],
 912        "anonymous": false
 913      },
 914      {
 915        "type": "event",
 916        "name": "SkippedIncorrectNonce",
 917        "inputs": [
 918          {
 919            "name": "nonce",
 920            "type": "uint64",
 921            "indexed": true,
 922            "internalType": "uint64"
 923          },
 924          {
 925            "name": "sender",
 926            "type": "address",
 927            "indexed": true,
 928            "internalType": "address"
 929          }
 930        ],
 931        "anonymous": false
 932      },
 933      {
 934        "type": "event",
 935        "name": "SkippedSenderWithPreviousRampMessageInflight",
 936        "inputs": [
 937          {
 938            "name": "nonce",
 939            "type": "uint64",
 940            "indexed": true,
 941            "internalType": "uint64"
 942          },
 943          {
 944            "name": "sender",
 945            "type": "address",
 946            "indexed": true,
 947            "internalType": "address"
 948          }
 949        ],
 950        "anonymous": false
 951      },
 952      {
 953        "type": "event",
 954        "name": "Transmitted",
 955        "inputs": [
 956          {
 957            "name": "configDigest",
 958            "type": "bytes32",
 959            "indexed": false,
 960            "internalType": "bytes32"
 961          },
 962          {
 963            "name": "epoch",
 964            "type": "uint32",
 965            "indexed": false,
 966            "internalType": "uint32"
 967          }
 968        ],
 969        "anonymous": false
 970      },
 971      {
 972        "type": "error",
 973        "name": "AggregateValueMaxCapacityExceeded",
 974        "inputs": [
 975          { "name": "capacity", "type": "uint256", "internalType": "uint256" },
 976          { "name": "requested", "type": "uint256", "internalType": "uint256" }
 977        ]
 978      },
 979      {
 980        "type": "error",
 981        "name": "AggregateValueRateLimitReached",
 982        "inputs": [
 983          {
 984            "name": "minWaitInSeconds",
 985            "type": "uint256",
 986            "internalType": "uint256"
 987          },
 988          { "name": "available", "type": "uint256", "internalType": "uint256" }
 989        ]
 990      },
 991      {
 992        "type": "error",
 993        "name": "AlreadyAttempted",
 994        "inputs": [
 995          { "name": "sequenceNumber", "type": "uint64", "internalType": "uint64" }
 996        ]
 997      },
 998      {
 999        "type": "error",
1000        "name": "AlreadyExecuted",
1001        "inputs": [
1002          { "name": "sequenceNumber", "type": "uint64", "internalType": "uint64" }
1003        ]
1004      },
1005      { "type": "error", "name": "BadARMSignal", "inputs": [] },
1006      { "type": "error", "name": "BucketOverfilled", "inputs": [] },
1007      { "type": "error", "name": "CanOnlySelfCall", "inputs": [] },
1008      { "type": "error", "name": "CommitStoreAlreadyInUse", "inputs": [] },
1009      {
1010        "type": "error",
1011        "name": "ConfigDigestMismatch",
1012        "inputs": [
1013          { "name": "expected", "type": "bytes32", "internalType": "bytes32" },
1014          { "name": "actual", "type": "bytes32", "internalType": "bytes32" }
1015        ]
1016      },
1017      { "type": "error", "name": "EmptyReport", "inputs": [] },
1018      {
1019        "type": "error",
1020        "name": "ExecutionError",
1021        "inputs": [{ "name": "error", "type": "bytes", "internalType": "bytes" }]
1022      },
1023      {
1024        "type": "error",
1025        "name": "ForkedChain",
1026        "inputs": [
1027          { "name": "expected", "type": "uint256", "internalType": "uint256" },
1028          { "name": "actual", "type": "uint256", "internalType": "uint256" }
1029        ]
1030      },
1031      {
1032        "type": "error",
1033        "name": "InvalidConfig",
1034        "inputs": [
1035          { "name": "message", "type": "string", "internalType": "string" }
1036        ]
1037      },
1038      {
1039        "type": "error",
1040        "name": "InvalidManualExecutionGasLimit",
1041        "inputs": [
1042          { "name": "index", "type": "uint256", "internalType": "uint256" },
1043          { "name": "newLimit", "type": "uint256", "internalType": "uint256" }
1044        ]
1045      },
1046      { "type": "error", "name": "InvalidMessageId", "inputs": [] },
1047      {
1048        "type": "error",
1049        "name": "InvalidNewState",
1050        "inputs": [
1051          {
1052            "name": "sequenceNumber",
1053            "type": "uint64",
1054            "internalType": "uint64"
1055          },
1056          {
1057            "name": "newState",
1058            "type": "uint8",
1059            "internalType": "enum Internal.MessageExecutionState"
1060          }
1061        ]
1062      },
1063      {
1064        "type": "error",
1065        "name": "InvalidSourceChain",
1066        "inputs": [
1067          {
1068            "name": "sourceChainSelector",
1069            "type": "uint64",
1070            "internalType": "uint64"
1071          }
1072        ]
1073      },
1074      { "type": "error", "name": "InvalidTokenPoolConfig", "inputs": [] },
1075      {
1076        "type": "error",
1077        "name": "ManualExecutionGasLimitMismatch",
1078        "inputs": []
1079      },
1080      { "type": "error", "name": "ManualExecutionNotYetEnabled", "inputs": [] },
1081      {
1082        "type": "error",
1083        "name": "MessageTooLarge",
1084        "inputs": [
1085          { "name": "maxSize", "type": "uint256", "internalType": "uint256" },
1086          { "name": "actualSize", "type": "uint256", "internalType": "uint256" }
1087        ]
1088      },
1089      { "type": "error", "name": "OnlyCallableByAdminOrOwner", "inputs": [] },
1090      { "type": "error", "name": "OracleCannotBeZeroAddress", "inputs": [] },
1091      { "type": "error", "name": "PoolAlreadyAdded", "inputs": [] },
1092      { "type": "error", "name": "PoolDoesNotExist", "inputs": [] },
1093      {
1094        "type": "error",
1095        "name": "PriceNotFoundForToken",
1096        "inputs": [
1097          { "name": "token", "type": "address", "internalType": "address" }
1098        ]
1099      },
1100      {
1101        "type": "error",
1102        "name": "ReceiverError",
1103        "inputs": [{ "name": "error", "type": "bytes", "internalType": "bytes" }]
1104      },
1105      { "type": "error", "name": "RootNotCommitted", "inputs": [] },
1106      {
1107        "type": "error",
1108        "name": "TokenDataMismatch",
1109        "inputs": [
1110          { "name": "sequenceNumber", "type": "uint64", "internalType": "uint64" }
1111        ]
1112      },
1113      {
1114        "type": "error",
1115        "name": "TokenHandlingError",
1116        "inputs": [{ "name": "error", "type": "bytes", "internalType": "bytes" }]
1117      },
1118      {
1119        "type": "error",
1120        "name": "TokenMaxCapacityExceeded",
1121        "inputs": [
1122          { "name": "capacity", "type": "uint256", "internalType": "uint256" },
1123          { "name": "requested", "type": "uint256", "internalType": "uint256" },
1124          { "name": "tokenAddress", "type": "address", "internalType": "address" }
1125        ]
1126      },
1127      { "type": "error", "name": "TokenPoolMismatch", "inputs": [] },
1128      {
1129        "type": "error",
1130        "name": "TokenRateLimitReached",
1131        "inputs": [
1132          {
1133            "name": "minWaitInSeconds",
1134            "type": "uint256",
1135            "internalType": "uint256"
1136          },
1137          { "name": "available", "type": "uint256", "internalType": "uint256" },
1138          { "name": "tokenAddress", "type": "address", "internalType": "address" }
1139        ]
1140      },
1141      { "type": "error", "name": "UnauthorizedTransmitter", "inputs": [] },
1142      { "type": "error", "name": "UnexpectedTokenData", "inputs": [] },
1143      {
1144        "type": "error",
1145        "name": "UnsupportedNumberOfTokens",
1146        "inputs": [
1147          { "name": "sequenceNumber", "type": "uint64", "internalType": "uint64" }
1148        ]
1149      },
1150      {
1151        "type": "error",
1152        "name": "UnsupportedToken",
1153        "inputs": [
1154          {
1155            "name": "token",
1156            "type": "address",
1157            "internalType": "contract IERC20"
1158          }
1159        ]
1160      },
1161      {
1162        "type": "error",
1163        "name": "WrongMessageLength",
1164        "inputs": [
1165          { "name": "expected", "type": "uint256", "internalType": "uint256" },
1166          { "name": "actual", "type": "uint256", "internalType": "uint256" }
1167        ]
1168      },
1169      { "type": "error", "name": "ZeroAddressNotAllowed", "inputs": [] }
1170    ]