// TODO: track a v2 release tag and the v2.0.0 folder instead of a commit + latest/ folder, once 2.0.0 is released in `chainlink-ccip` export default [ // generate: // fetch('https://github.com/smartcontractkit/chainlink-ccip/raw/refs/heads/main/chains/evm/gobindings/generated/v2_0_0/ping_pong_demo/ping_pong_demo.go') // .then((res) => res.text()) // .then((body) => body.match(/^\s*ABI: "(.*?)",$/m)?.[1]) // .then((abi) => JSON.parse(abi.replace(/\\"/g, '"'))) // .then((obj) => require('util').inspect(obj, {depth:99}).split('\n').slice(1, -1)) { type: 'constructor', inputs: [ { name: 'router', type: 'address', internalType: 'address' }, { name: 'feeToken', type: 'address', internalType: 'contract IERC20', }, ], stateMutability: 'nonpayable', }, { type: 'function', name: 'acceptOwnership', inputs: [], outputs: [], stateMutability: 'nonpayable', }, { type: 'function', name: 'ccipReceive', inputs: [ { name: 'message', type: 'tuple', internalType: 'struct Client.Any2EVMMessage', components: [ { name: 'messageId', type: 'bytes32', internalType: 'bytes32', }, { name: 'sourceChainSelector', type: 'uint64', internalType: 'uint64', }, { name: 'sender', type: 'bytes', internalType: 'bytes' }, { name: 'data', type: 'bytes', internalType: 'bytes' }, { name: 'destTokenAmounts', type: 'tuple[]', internalType: 'struct Client.EVMTokenAmount[]', components: [ { name: 'token', type: 'address', internalType: 'address', }, { name: 'amount', type: 'uint256', internalType: 'uint256', }, ], }, ], }, ], outputs: [], stateMutability: 'nonpayable', }, { type: 'function', name: 'getCCVsAndFinalityConfig', inputs: [ { name: '', type: 'uint64', internalType: 'uint64' }, { name: '', type: 'bytes', internalType: 'bytes' }, ], outputs: [ { name: 'requiredCCVs', type: 'address[]', internalType: 'address[]', }, { name: 'optionalCCVs', type: 'address[]', internalType: 'address[]', }, { name: 'optionalThreshold', type: 'uint8', internalType: 'uint8', }, { name: 'allowedFinalityConfig', type: 'bytes4', internalType: 'bytes4', }, ], stateMutability: 'view', }, { type: 'function', name: 'getCounterpartAddress', inputs: [], outputs: [{ name: '', type: 'bytes', internalType: 'bytes' }], stateMutability: 'view', }, { type: 'function', name: 'getCounterpartChainSelector', inputs: [], outputs: [{ name: '', type: 'uint64', internalType: 'uint64' }], stateMutability: 'view', }, { type: 'function', name: 'getFeeToken', inputs: [], outputs: [{ name: '', type: 'address', internalType: 'contract IERC20' }], stateMutability: 'view', }, { type: 'function', name: 'getOutOfOrderExecution', inputs: [], outputs: [{ name: '', type: 'bool', internalType: 'bool' }], stateMutability: 'view', }, { type: 'function', name: 'getRouter', inputs: [], outputs: [{ name: '', type: 'address', internalType: 'address' }], stateMutability: 'view', }, { type: 'function', name: 'isPaused', inputs: [], outputs: [{ name: '', type: 'bool', internalType: 'bool' }], stateMutability: 'view', }, { type: 'function', name: 'owner', inputs: [], outputs: [{ name: '', type: 'address', internalType: 'address' }], stateMutability: 'view', }, { type: 'function', name: 'setCounterpart', inputs: [ { name: 'counterpartChainSelector', type: 'uint64', internalType: 'uint64', }, { name: 'counterpartAddress', type: 'bytes', internalType: 'bytes', }, ], outputs: [], stateMutability: 'nonpayable', }, { type: 'function', name: 'setCounterpartAddress', inputs: [{ name: 'addr', type: 'bytes', internalType: 'bytes' }], outputs: [], stateMutability: 'nonpayable', }, { type: 'function', name: 'setCounterpartChainSelector', inputs: [{ name: 'chainSelector', type: 'uint64', internalType: 'uint64' }], outputs: [], stateMutability: 'nonpayable', }, { type: 'function', name: 'setOutOfOrderExecution', inputs: [ { name: 'outOfOrderExecution', type: 'bool', internalType: 'bool', }, ], outputs: [], stateMutability: 'nonpayable', }, { type: 'function', name: 'setPaused', inputs: [{ name: 'pause', type: 'bool', internalType: 'bool' }], outputs: [], stateMutability: 'nonpayable', }, { type: 'function', name: 'startPingPong', inputs: [], outputs: [], stateMutability: 'nonpayable', }, { type: 'function', name: 'supportsInterface', inputs: [{ name: 'interfaceId', type: 'bytes4', internalType: 'bytes4' }], outputs: [{ name: '', type: 'bool', internalType: 'bool' }], stateMutability: 'pure', }, { type: 'function', name: 'transferOwnership', inputs: [{ name: 'to', type: 'address', internalType: 'address' }], outputs: [], stateMutability: 'nonpayable', }, { type: 'function', name: 'typeAndVersion', inputs: [], outputs: [{ name: '', type: 'string', internalType: 'string' }], stateMutability: 'pure', }, { type: 'event', name: 'OutOfOrderExecutionChange', inputs: [ { name: 'isOutOfOrder', type: 'bool', indexed: false, internalType: 'bool', }, ], anonymous: false, }, { type: 'event', name: 'OwnershipTransferRequested', inputs: [ { name: 'from', type: 'address', indexed: true, internalType: 'address', }, { name: 'to', type: 'address', indexed: true, internalType: 'address', }, ], anonymous: false, }, { type: 'event', name: 'OwnershipTransferred', inputs: [ { name: 'from', type: 'address', indexed: true, internalType: 'address', }, { name: 'to', type: 'address', indexed: true, internalType: 'address', }, ], anonymous: false, }, { type: 'event', name: 'Ping', inputs: [ { name: 'pingPongCount', type: 'uint256', indexed: false, internalType: 'uint256', }, ], anonymous: false, }, { type: 'event', name: 'Pong', inputs: [ { name: 'pingPongCount', type: 'uint256', indexed: false, internalType: 'uint256', }, ], anonymous: false, }, { type: 'error', name: 'CannotTransferToSelf', inputs: [] }, { type: 'error', name: 'InvalidRouter', inputs: [{ name: 'router', type: 'address', internalType: 'address' }], }, { type: 'error', name: 'MustBeProposedOwner', inputs: [] }, { type: 'error', name: 'OnlyCallableByOwner', inputs: [] }, { type: 'error', name: 'OwnerCannotBeZero', inputs: [] }, // generate:end ] as const