// NOTE: this ABI file only contains some of the functions to use by the SDK
export const SOURCE_CHAIN_GUARD_ABI = [
  {
    inputs: [
      {
        internalType: 'contract ISignatureTransfer',
        name: '_permit2',
        type: 'address',
      },
      {
        internalType: 'address',
        name: 'initialOwner',
        type: 'address',
      },
      {
        internalType: 'address',
        name: '_auctioneer',
        type: 'address',
      },
      {
        internalType: 'contract IERC20',
        name: '_stakeToken',
        type: 'address',
      },
      {
        internalType: 'contract IERC20',
        name: '_stablecoin',
        type: 'address',
      },
      {
        internalType: 'uint32',
        name: '_withdrawalDelay',
        type: 'uint32',
      },
    ],
    stateMutability: 'nonpayable',
    type: 'constructor',
  },
  {
    inputs: [],
    name: 'AlreadyInitialized',
    type: 'error',
  },
  {
    inputs: [],
    name: 'AlreadyPenalized',
    type: 'error',
  },
  {
    inputs: [],
    name: 'AlreadySwapped',
    type: 'error',
  },
  {
    inputs: [
      {
        internalType: 'uint256',
        name: '',
        type: 'uint256',
      },
    ],
    name: 'BelowMinStablecoinsAmount',
    type: 'error',
  },
  {
    inputs: [],
    name: 'FeeOnTransferTokensNotSupported',
    type: 'error',
  },
  {
    inputs: [],
    name: 'InitiateAndWaitForDeadline',
    type: 'error',
  },
  {
    inputs: [],
    name: 'InvalidAddress',
    type: 'error',
  },
  {
    inputs: [],
    name: 'InvalidAuctioneerSignature',
    type: 'error',
  },
  {
    inputs: [],
    name: 'InvalidObligation',
    type: 'error',
  },
  {
    inputs: [],
    name: 'InvalidOrder',
    type: 'error',
  },
  {
    inputs: [],
    name: 'InvalidPermission',
    type: 'error',
  },
  {
    inputs: [],
    name: 'InvalidShortString',
    type: 'error',
  },
  {
    inputs: [],
    name: 'InvalidSignature',
    type: 'error',
  },
  {
    inputs: [],
    name: 'InvalidSolverDeadline',
    type: 'error',
  },
  {
    inputs: [],
    name: 'InvalidStakingContract',
    type: 'error',
  },
  {
    inputs: [],
    name: 'InvalidSuccessConfirmation',
    type: 'error',
  },
  {
    inputs: [],
    name: 'NoReentrancy',
    type: 'error',
  },
  {
    inputs: [],
    name: 'NotAllowed',
    type: 'error',
  },
  {
    inputs: [],
    name: 'NotAuctioneer',
    type: 'error',
  },
  {
    inputs: [],
    name: 'NotSolver',
    type: 'error',
  },
  {
    inputs: [],
    name: 'NotUser',
    type: 'error',
  },
  {
    inputs: [],
    name: 'OrderIsBeingProcessed',
    type: 'error',
  },
  {
    inputs: [],
    name: 'OrderIsNotActive',
    type: 'error',
  },
  {
    inputs: [],
    name: 'OverMaxWithdrawalDelay',
    type: 'error',
  },
  {
    inputs: [],
    name: 'OverdueDeadline',
    type: 'error',
  },
  {
    inputs: [
      {
        internalType: 'address',
        name: 'owner',
        type: 'address',
      },
    ],
    name: 'OwnableInvalidOwner',
    type: 'error',
  },
  {
    inputs: [
      {
        internalType: 'address',
        name: 'account',
        type: 'address',
      },
    ],
    name: 'OwnableUnauthorizedAccount',
    type: 'error',
  },
  {
    inputs: [
      {
        internalType: 'address',
        name: 'token',
        type: 'address',
      },
    ],
    name: 'SafeERC20FailedOperation',
    type: 'error',
  },
  {
    inputs: [],
    name: 'StakeAmountIsTooLow',
    type: 'error',
  },
  {
    inputs: [],
    name: 'StakingContractIsNotApproved',
    type: 'error',
  },
  {
    inputs: [
      {
        internalType: 'string',
        name: 'str',
        type: 'string',
      },
    ],
    name: 'StringTooLong',
    type: 'error',
  },
  {
    inputs: [],
    name: 'SwapIsNotAllowed',
    type: 'error',
  },
  {
    inputs: [],
    name: 'ZeroAmount',
    type: 'error',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'address',
        name: '',
        type: 'address',
      },
    ],
    name: 'AuctioneerSet',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [],
    name: 'EIP712DomainChanged',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: 'bytes32',
        name: 'orderHash',
        type: 'bytes32',
      },
      {
        indexed: true,
        internalType: 'address',
        name: 'solver',
        type: 'address',
      },
      {
        indexed: false,
        internalType: 'uint32',
        name: 'deadline',
        type: 'uint32',
      },
      {
        indexed: false,
        internalType: 'uint128',
        name: 'protocolFee',
        type: 'uint128',
      },
      {
        indexed: false,
        internalType: 'uint128',
        name: 'collateralAmount',
        type: 'uint128',
      },
    ],
    name: 'ExecutionStart',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: 'bytes32',
        name: 'orderHash',
        type: 'bytes32',
      },
      {
        indexed: true,
        internalType: 'address',
        name: 'user',
        type: 'address',
      },
      {
        indexed: false,
        internalType: 'address',
        name: 'tokenIn',
        type: 'address',
      },
      {
        indexed: false,
        internalType: 'uint32',
        name: 'deadline',
        type: 'uint32',
      },
      {
        indexed: false,
        internalType: 'uint128',
        name: 'amountIn',
        type: 'uint128',
      },
      {
        indexed: false,
        internalType: 'uint128',
        name: 'minStablecoinsAmount',
        type: 'uint128',
      },
      {
        indexed: false,
        internalType: 'bytes32',
        name: 'executionDetailsHash',
        type: 'bytes32',
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'nonce',
        type: 'uint256',
      },
    ],
    name: 'NewOrder',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: 'bytes32',
        name: 'orderHash',
        type: 'bytes32',
      },
    ],
    name: 'OrderCancelledByUser',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: 'bytes32',
        name: 'orderHash',
        type: 'bytes32',
      },
    ],
    name: 'OrderClosedByUser',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: 'bytes32',
        name: 'orderHash',
        type: 'bytes32',
      },
      {
        indexed: true,
        internalType: 'address',
        name: 'solver',
        type: 'address',
      },
      {
        indexed: false,
        internalType: 'address',
        name: 'recoverTokensReceiver',
        type: 'address',
      },
    ],
    name: 'OrderSuccessfullyFulfilled',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: 'address',
        name: 'previousOwner',
        type: 'address',
      },
      {
        indexed: true,
        internalType: 'address',
        name: 'newOwner',
        type: 'address',
      },
    ],
    name: 'OwnershipTransferStarted',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: 'address',
        name: 'previousOwner',
        type: 'address',
      },
      {
        indexed: true,
        internalType: 'address',
        name: 'newOwner',
        type: 'address',
      },
    ],
    name: 'OwnershipTransferred',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'address',
        name: 'receiver',
        type: 'address',
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'amount',
        type: 'uint256',
      },
    ],
    name: 'ProtocolFeesCollected',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'address',
        name: 'solver',
        type: 'address',
      },
      {
        indexed: false,
        internalType: 'bytes32',
        name: 'orderHash',
        type: 'bytes32',
      },
      {
        indexed: false,
        internalType: 'uint128',
        name: 'protocolFee',
        type: 'uint128',
      },
      {
        indexed: false,
        internalType: 'uint128',
        name: 'userCompensation',
        type: 'uint128',
      },
    ],
    name: 'SolverPenalized',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: 'address',
        name: 'account',
        type: 'address',
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'amount',
        type: 'uint256',
      },
    ],
    name: 'Stake',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: 'address',
        name: 'stakingContract',
        type: 'address',
      },
      {
        indexed: true,
        internalType: 'address',
        name: 'account',
        type: 'address',
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'amount',
        type: 'uint256',
      },
    ],
    name: 'StakeMigration',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: 'address',
        name: 'account',
        type: 'address',
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'amount',
        type: 'uint256',
      },
    ],
    name: 'StakeUnlocked',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'address',
        name: 'stakingContract',
        type: 'address',
      },
      {
        indexed: false,
        internalType: 'bool',
        name: 'approved',
        type: 'bool',
      },
    ],
    name: 'StakingContractApproved',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: 'bytes32',
        name: 'orderHash',
        type: 'bytes32',
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'stablecoinsAmount',
        type: 'uint256',
      },
    ],
    name: 'SwappedToStablecoins',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: 'address',
        name: 'account',
        type: 'address',
      },
      {
        indexed: false,
        internalType: 'address',
        name: 'receiver',
        type: 'address',
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'amount',
        type: 'uint256',
      },
    ],
    name: 'Withdrawal',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: 'uint32',
        name: '',
        type: 'uint32',
      },
    ],
    name: 'WithdrawalDelaySet',
    type: 'event',
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: 'address',
        name: 'account',
        type: 'address',
      },
      {
        indexed: false,
        internalType: 'uint256',
        name: 'amount',
        type: 'uint256',
      },
    ],
    name: 'WithdrawalInitiated',
    type: 'event',
  },
  {
    inputs: [],
    name: 'acceptOwnership',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [],
    name: 'auctioneer',
    outputs: [
      {
        internalType: 'address',
        name: '',
        type: 'address',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [
      {
        components: [
          {
            internalType: 'address',
            name: 'user',
            type: 'address',
          },
          {
            internalType: 'address',
            name: 'tokenIn',
            type: 'address',
          },
          {
            internalType: 'uint32',
            name: 'srcChainId',
            type: 'uint32',
          },
          {
            internalType: 'uint32',
            name: 'deadline',
            type: 'uint32',
          },
          {
            internalType: 'uint128',
            name: 'amountIn',
            type: 'uint128',
          },
          {
            internalType: 'uint128',
            name: 'minStablecoinsAmount',
            type: 'uint128',
          },
          {
            internalType: 'bytes32',
            name: 'executionDetailsHash',
            type: 'bytes32',
          },
          {
            internalType: 'uint256',
            name: 'nonce',
            type: 'uint256',
          },
        ],
        internalType: 'struct OrderInfo',
        name: 'orderInfo',
        type: 'tuple',
      },
    ],
    name: 'cancelOrder',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [],
    name: 'cancelWithdrawalOrMigration',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      {
        components: [
          {
            internalType: 'address',
            name: 'user',
            type: 'address',
          },
          {
            internalType: 'address',
            name: 'tokenIn',
            type: 'address',
          },
          {
            internalType: 'uint32',
            name: 'srcChainId',
            type: 'uint32',
          },
          {
            internalType: 'uint32',
            name: 'deadline',
            type: 'uint32',
          },
          {
            internalType: 'uint128',
            name: 'amountIn',
            type: 'uint128',
          },
          {
            internalType: 'uint128',
            name: 'minStablecoinsAmount',
            type: 'uint128',
          },
          {
            internalType: 'bytes32',
            name: 'executionDetailsHash',
            type: 'bytes32',
          },
          {
            internalType: 'uint256',
            name: 'nonce',
            type: 'uint256',
          },
        ],
        internalType: 'struct OrderInfo',
        name: 'orderInfo',
        type: 'tuple',
      },
      {
        components: [
          {
            internalType: 'bytes32',
            name: 'orderHash',
            type: 'bytes32',
          },
          {
            internalType: 'address',
            name: 'solver',
            type: 'address',
          },
        ],
        internalType: 'struct SuccessConfirmation',
        name: 'successConfirmation',
        type: 'tuple',
      },
      {
        internalType: 'bytes',
        name: 'successConfirmationSignature',
        type: 'bytes',
      },
      {
        internalType: 'address',
        name: 'recoverTokensReceiver',
        type: 'address',
      },
    ],
    name: 'claimTokens',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      {
        internalType: 'address',
        name: 'receiver',
        type: 'address',
      },
    ],
    name: 'collectProtocolFees',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [],
    name: 'collectedProtocolFees',
    outputs: [
      {
        internalType: 'uint128',
        name: '',
        type: 'uint128',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [
      {
        components: [
          {
            internalType: 'address',
            name: 'user',
            type: 'address',
          },
          {
            internalType: 'address',
            name: 'tokenIn',
            type: 'address',
          },
          {
            internalType: 'uint32',
            name: 'srcChainId',
            type: 'uint32',
          },
          {
            internalType: 'uint32',
            name: 'deadline',
            type: 'uint32',
          },
          {
            internalType: 'uint128',
            name: 'amountIn',
            type: 'uint128',
          },
          {
            internalType: 'uint128',
            name: 'minStablecoinsAmount',
            type: 'uint128',
          },
          {
            internalType: 'bytes32',
            name: 'executionDetailsHash',
            type: 'bytes32',
          },
          {
            internalType: 'uint256',
            name: 'nonce',
            type: 'uint256',
          },
        ],
        internalType: 'struct OrderInfo',
        name: 'orderInfo',
        type: 'tuple',
      },
    ],
    name: 'createOrder',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [],
    name: 'eip712Domain',
    outputs: [
      {
        internalType: 'bytes1',
        name: 'fields',
        type: 'bytes1',
      },
      {
        internalType: 'string',
        name: 'name',
        type: 'string',
      },
      {
        internalType: 'string',
        name: 'version',
        type: 'string',
      },
      {
        internalType: 'uint256',
        name: 'chainId',
        type: 'uint256',
      },
      {
        internalType: 'address',
        name: 'verifyingContract',
        type: 'address',
      },
      {
        internalType: 'bytes32',
        name: 'salt',
        type: 'bytes32',
      },
      {
        internalType: 'uint256[]',
        name: 'extensions',
        type: 'uint256[]',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [
      {
        components: [
          {
            internalType: 'address',
            name: 'user',
            type: 'address',
          },
          {
            internalType: 'address',
            name: 'tokenIn',
            type: 'address',
          },
          {
            internalType: 'uint32',
            name: 'srcChainId',
            type: 'uint32',
          },
          {
            internalType: 'uint32',
            name: 'deadline',
            type: 'uint32',
          },
          {
            internalType: 'uint128',
            name: 'amountIn',
            type: 'uint128',
          },
          {
            internalType: 'uint128',
            name: 'minStablecoinsAmount',
            type: 'uint128',
          },
          {
            internalType: 'bytes32',
            name: 'executionDetailsHash',
            type: 'bytes32',
          },
          {
            internalType: 'uint256',
            name: 'nonce',
            type: 'uint256',
          },
        ],
        internalType: 'struct OrderInfo',
        name: 'orderInfo',
        type: 'tuple',
      },
    ],
    name: 'getOrderHash',
    outputs: [
      {
        internalType: 'bytes32',
        name: '',
        type: 'bytes32',
      },
    ],
    stateMutability: 'pure',
    type: 'function',
  },
  {
    inputs: [
      {
        internalType: 'uint96',
        name: 'amount',
        type: 'uint96',
      },
    ],
    name: 'initiateWithdrawalOrMigration',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      {
        internalType: 'address',
        name: '',
        type: 'address',
      },
    ],
    name: 'isApprovedForMigrationStakingContract',
    outputs: [
      {
        internalType: 'bool',
        name: '',
        type: 'bool',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [
      {
        internalType: 'bytes32',
        name: '',
        type: 'bytes32',
      },
    ],
    name: 'lockedStablecoins',
    outputs: [
      {
        internalType: 'uint256',
        name: '',
        type: 'uint256',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [
      {
        internalType: 'contract IStakingV1',
        name: 'newStaking',
        type: 'address',
      },
      {
        internalType: 'address',
        name: 'account',
        type: 'address',
      },
    ],
    name: 'migrateStake',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      {
        internalType: 'bytes32',
        name: '',
        type: 'bytes32',
      },
    ],
    name: 'orderData',
    outputs: [
      {
        internalType: 'bool',
        name: 'initialized',
        type: 'bool',
      },
      {
        internalType: 'bool',
        name: 'deactivated',
        type: 'bool',
      },
      {
        internalType: 'bool',
        name: 'tokensInWereSwappedToStablecoins',
        type: 'bool',
      },
      {
        internalType: 'uint128',
        name: 'lockedCollateral',
        type: 'uint128',
      },
      {
        internalType: 'uint32',
        name: 'deadline',
        type: 'uint32',
      },
      {
        internalType: 'uint32',
        name: 'latestExecutionStart',
        type: 'uint32',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'owner',
    outputs: [
      {
        internalType: 'address',
        name: '',
        type: 'address',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [
      {
        components: [
          {
            internalType: 'address',
            name: 'user',
            type: 'address',
          },
          {
            internalType: 'address',
            name: 'tokenIn',
            type: 'address',
          },
          {
            internalType: 'uint32',
            name: 'srcChainId',
            type: 'uint32',
          },
          {
            internalType: 'uint32',
            name: 'deadline',
            type: 'uint32',
          },
          {
            internalType: 'uint128',
            name: 'amountIn',
            type: 'uint128',
          },
          {
            internalType: 'uint128',
            name: 'minStablecoinsAmount',
            type: 'uint128',
          },
          {
            internalType: 'bytes32',
            name: 'executionDetailsHash',
            type: 'bytes32',
          },
          {
            internalType: 'uint256',
            name: 'nonce',
            type: 'uint256',
          },
        ],
        internalType: 'struct OrderInfo',
        name: 'orderInfo',
        type: 'tuple',
      },
      {
        components: [
          {
            internalType: 'uint256',
            name: 'signTimestamp',
            type: 'uint256',
          },
          {
            internalType: 'uint256',
            name: 'startDeadline',
            type: 'uint256',
          },
          {
            internalType: 'uint256',
            name: 'executionDeadline',
            type: 'uint256',
          },
          {
            internalType: 'bytes32',
            name: 'orderHash',
            type: 'bytes32',
          },
          {
            internalType: 'uint128',
            name: 'protocolFee',
            type: 'uint128',
          },
          {
            internalType: 'uint128',
            name: 'userCompensation',
            type: 'uint128',
          },
          {
            internalType: 'string',
            name: 'destinationChainSolverAddress',
            type: 'string',
          },
          {
            internalType: 'bool',
            name: 'willSwapTokensInToStablecoins',
            type: 'bool',
          },
          {
            internalType: 'uint128',
            name: 'minStablecoinsAmount',
            type: 'uint128',
          },
        ],
        internalType: 'struct SolverObligation',
        name: 'obligation',
        type: 'tuple',
      },
      {
        internalType: 'bytes',
        name: 'solverSignature',
        type: 'bytes',
      },
    ],
    name: 'penalizeSolver',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      {
        internalType: 'bytes32',
        name: '',
        type: 'bytes32',
      },
    ],
    name: 'penalized',
    outputs: [
      {
        internalType: 'bool',
        name: '',
        type: 'bool',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'pendingOwner',
    outputs: [
      {
        internalType: 'address',
        name: '',
        type: 'address',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'permit2',
    outputs: [
      {
        internalType: 'contract ISignatureTransfer',
        name: '',
        type: 'address',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [
      {
        components: [
          {
            internalType: 'address',
            name: 'user',
            type: 'address',
          },
          {
            internalType: 'address',
            name: 'tokenIn',
            type: 'address',
          },
          {
            internalType: 'uint32',
            name: 'srcChainId',
            type: 'uint32',
          },
          {
            internalType: 'uint32',
            name: 'deadline',
            type: 'uint32',
          },
          {
            internalType: 'uint128',
            name: 'amountIn',
            type: 'uint128',
          },
          {
            internalType: 'uint128',
            name: 'minStablecoinsAmount',
            type: 'uint128',
          },
          {
            internalType: 'bytes32',
            name: 'executionDetailsHash',
            type: 'bytes32',
          },
          {
            internalType: 'uint256',
            name: 'nonce',
            type: 'uint256',
          },
        ],
        internalType: 'struct OrderInfo',
        name: 'orderInfo',
        type: 'tuple',
      },
    ],
    name: 'recoverTokens',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [],
    name: 'renounceOwnership',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      {
        internalType: 'address',
        name: 'stakingContract',
        type: 'address',
      },
      {
        internalType: 'bool',
        name: 'approve',
        type: 'bool',
      },
    ],
    name: 'setApprovedStakingContractForMigration',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      {
        internalType: 'address',
        name: 'newAuctioneer',
        type: 'address',
      },
    ],
    name: 'setAuctioneer',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      {
        internalType: 'uint32',
        name: '_withdrawalDelay',
        type: 'uint32',
      },
    ],
    name: 'setWithdrawalDelay',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [],
    name: 'stablecoin',
    outputs: [
      {
        internalType: 'contract IERC20',
        name: '',
        type: 'address',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [
      {
        internalType: 'address',
        name: 'account',
        type: 'address',
      },
      {
        internalType: 'uint128',
        name: 'amount',
        type: 'uint128',
      },
    ],
    name: 'stake',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      {
        internalType: 'address',
        name: '',
        type: 'address',
      },
    ],
    name: 'stakeData',
    outputs: [
      {
        internalType: 'uint128',
        name: 'stakedAmount',
        type: 'uint128',
      },
      {
        internalType: 'uint96',
        name: 'pendingWithdrawalAmount',
        type: 'uint96',
      },
      {
        internalType: 'uint32',
        name: 'initiateWithdrawalTime',
        type: 'uint32',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'stakeToken',
    outputs: [
      {
        internalType: 'contract IERC20',
        name: '',
        type: 'address',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [
      {
        components: [
          {
            internalType: 'address',
            name: 'user',
            type: 'address',
          },
          {
            internalType: 'address',
            name: 'tokenIn',
            type: 'address',
          },
          {
            internalType: 'uint32',
            name: 'srcChainId',
            type: 'uint32',
          },
          {
            internalType: 'uint32',
            name: 'deadline',
            type: 'uint32',
          },
          {
            internalType: 'uint128',
            name: 'amountIn',
            type: 'uint128',
          },
          {
            internalType: 'uint128',
            name: 'minStablecoinsAmount',
            type: 'uint128',
          },
          {
            internalType: 'bytes32',
            name: 'executionDetailsHash',
            type: 'bytes32',
          },
          {
            internalType: 'uint256',
            name: 'nonce',
            type: 'uint256',
          },
        ],
        internalType: 'struct OrderInfo',
        name: 'orderInfo',
        type: 'tuple',
      },
      {
        internalType: 'bytes',
        name: 'userSignature',
        type: 'bytes',
      },
      {
        components: [
          {
            internalType: 'address',
            name: 'solver',
            type: 'address',
          },
          {
            internalType: 'bytes32',
            name: 'orderHash',
            type: 'bytes32',
          },
          {
            internalType: 'uint128',
            name: 'collateralAmount',
            type: 'uint128',
          },
          {
            internalType: 'uint128',
            name: 'protocolFee',
            type: 'uint128',
          },
          {
            internalType: 'bool',
            name: 'allowSwap',
            type: 'bool',
          },
          {
            internalType: 'uint128',
            name: 'minStablecoinsAmount',
            type: 'uint128',
          },
          {
            internalType: 'uint32',
            name: 'deadline',
            type: 'uint32',
          },
        ],
        internalType: 'struct SourceChainSolverPermission',
        name: 'solverPermission',
        type: 'tuple',
      },
      {
        internalType: 'bytes',
        name: 'auctioneerSignature',
        type: 'bytes',
      },
    ],
    name: 'startOrderExecution',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      {
        components: [
          {
            internalType: 'address',
            name: 'user',
            type: 'address',
          },
          {
            internalType: 'address',
            name: 'tokenIn',
            type: 'address',
          },
          {
            internalType: 'uint32',
            name: 'srcChainId',
            type: 'uint32',
          },
          {
            internalType: 'uint32',
            name: 'deadline',
            type: 'uint32',
          },
          {
            internalType: 'uint128',
            name: 'amountIn',
            type: 'uint128',
          },
          {
            internalType: 'uint128',
            name: 'minStablecoinsAmount',
            type: 'uint128',
          },
          {
            internalType: 'bytes32',
            name: 'executionDetailsHash',
            type: 'bytes32',
          },
          {
            internalType: 'uint256',
            name: 'nonce',
            type: 'uint256',
          },
        ],
        internalType: 'struct OrderInfo',
        name: 'orderInfo',
        type: 'tuple',
      },
      {
        internalType: 'bytes',
        name: 'userSignature',
        type: 'bytes',
      },
      {
        components: [
          {
            internalType: 'address',
            name: 'solver',
            type: 'address',
          },
          {
            internalType: 'bytes32',
            name: 'orderHash',
            type: 'bytes32',
          },
          {
            internalType: 'uint128',
            name: 'collateralAmount',
            type: 'uint128',
          },
          {
            internalType: 'uint128',
            name: 'protocolFee',
            type: 'uint128',
          },
          {
            internalType: 'bool',
            name: 'allowSwap',
            type: 'bool',
          },
          {
            internalType: 'uint128',
            name: 'minStablecoinsAmount',
            type: 'uint128',
          },
          {
            internalType: 'uint32',
            name: 'deadline',
            type: 'uint32',
          },
        ],
        internalType: 'struct SourceChainSolverPermission',
        name: 'solverPermission',
        type: 'tuple',
      },
      {
        internalType: 'bytes',
        name: 'auctioneerSignature',
        type: 'bytes',
      },
      {
        internalType: 'contract ISourceChainSwapper',
        name: 'swapper',
        type: 'address',
      },
      {
        internalType: 'bytes',
        name: 'swapData',
        type: 'bytes',
      },
    ],
    name: 'startOrderExecutionWithSwap',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      {
        internalType: 'address',
        name: 'newOwner',
        type: 'address',
      },
    ],
    name: 'transferOwnership',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      {
        internalType: 'address',
        name: 'receiver',
        type: 'address',
      },
    ],
    name: 'withdrawStake',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [],
    name: 'withdrawalDelay',
    outputs: [
      {
        internalType: 'uint32',
        name: '',
        type: 'uint32',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
] as const;
