# filecoinPayV1Abi

```ts
const filecoinPayV1Abi: readonly [{
  inputs: readonly [];
  stateMutability: "nonpayable";
  type: "constructor";
}, {
  inputs: readonly [];
  name: "COMMISSION_MAX_BPS";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "NETWORK_FEE_DENOMINATOR";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "NETWORK_FEE_NUMERATOR";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     internalType: "address";
     name: "owner";
     type: "address";
  }];
  name: "accounts";
  outputs: readonly [{
     internalType: "uint256";
     name: "funds";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "lockupCurrent";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "lockupRate";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "lockupLastSettledAt";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "contract IERC20";
     name: "token";
     type: "address";
  }];
  name: "auctionInfo";
  outputs: readonly [{
     internalType: "uint88";
     name: "startPrice";
     type: "uint88";
   }, {
     internalType: "uint168";
     name: "startTime";
     type: "uint168";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     internalType: "address";
     name: "recipient";
     type: "address";
   }, {
     internalType: "uint256";
     name: "requested";
     type: "uint256";
  }];
  name: "burnForFees";
  outputs: readonly [];
  stateMutability: "payable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     internalType: "address";
     name: "from";
     type: "address";
   }, {
     internalType: "address";
     name: "to";
     type: "address";
   }, {
     internalType: "address";
     name: "validator";
     type: "address";
   }, {
     internalType: "uint256";
     name: "commissionRateBps";
     type: "uint256";
   }, {
     internalType: "address";
     name: "serviceFeeRecipient";
     type: "address";
  }];
  name: "createRail";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     internalType: "address";
     name: "to";
     type: "address";
   }, {
     internalType: "uint256";
     name: "amount";
     type: "uint256";
  }];
  name: "deposit";
  outputs: readonly [];
  stateMutability: "payable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "contract IERC3009";
     name: "token";
     type: "address";
   }, {
     internalType: "address";
     name: "to";
     type: "address";
   }, {
     internalType: "uint256";
     name: "amount";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "validAfter";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "validBefore";
     type: "uint256";
   }, {
     internalType: "bytes32";
     name: "nonce";
     type: "bytes32";
   }, {
     internalType: "uint8";
     name: "v";
     type: "uint8";
   }, {
     internalType: "bytes32";
     name: "r";
     type: "bytes32";
   }, {
     internalType: "bytes32";
     name: "s";
     type: "bytes32";
  }];
  name: "depositWithAuthorization";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "contract IERC3009";
     name: "token";
     type: "address";
   }, {
     internalType: "address";
     name: "to";
     type: "address";
   }, {
     internalType: "uint256";
     name: "amount";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "validAfter";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "validBefore";
     type: "uint256";
   }, {
     internalType: "bytes32";
     name: "nonce";
     type: "bytes32";
   }, {
     internalType: "uint8";
     name: "v";
     type: "uint8";
   }, {
     internalType: "bytes32";
     name: "r";
     type: "bytes32";
   }, {
     internalType: "bytes32";
     name: "s";
     type: "bytes32";
   }, {
     internalType: "address";
     name: "operator";
     type: "address";
   }, {
     internalType: "uint256";
     name: "rateAllowance";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "lockupAllowance";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "maxLockupPeriod";
     type: "uint256";
  }];
  name: "depositWithAuthorizationAndApproveOperator";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "contract IERC3009";
     name: "token";
     type: "address";
   }, {
     internalType: "address";
     name: "to";
     type: "address";
   }, {
     internalType: "uint256";
     name: "amount";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "validAfter";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "validBefore";
     type: "uint256";
   }, {
     internalType: "bytes32";
     name: "nonce";
     type: "bytes32";
   }, {
     internalType: "uint8";
     name: "v";
     type: "uint8";
   }, {
     internalType: "bytes32";
     name: "r";
     type: "bytes32";
   }, {
     internalType: "bytes32";
     name: "s";
     type: "bytes32";
   }, {
     internalType: "address";
     name: "operator";
     type: "address";
   }, {
     internalType: "uint256";
     name: "rateAllowanceIncrease";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "lockupAllowanceIncrease";
     type: "uint256";
  }];
  name: "depositWithAuthorizationAndIncreaseOperatorApproval";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     internalType: "address";
     name: "to";
     type: "address";
   }, {
     internalType: "uint256";
     name: "amount";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "deadline";
     type: "uint256";
   }, {
     internalType: "uint8";
     name: "v";
     type: "uint8";
   }, {
     internalType: "bytes32";
     name: "r";
     type: "bytes32";
   }, {
     internalType: "bytes32";
     name: "s";
     type: "bytes32";
  }];
  name: "depositWithPermit";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     internalType: "address";
     name: "to";
     type: "address";
   }, {
     internalType: "uint256";
     name: "amount";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "deadline";
     type: "uint256";
   }, {
     internalType: "uint8";
     name: "v";
     type: "uint8";
   }, {
     internalType: "bytes32";
     name: "r";
     type: "bytes32";
   }, {
     internalType: "bytes32";
     name: "s";
     type: "bytes32";
   }, {
     internalType: "address";
     name: "operator";
     type: "address";
   }, {
     internalType: "uint256";
     name: "rateAllowance";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "lockupAllowance";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "maxLockupPeriod";
     type: "uint256";
  }];
  name: "depositWithPermitAndApproveOperator";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     internalType: "address";
     name: "to";
     type: "address";
   }, {
     internalType: "uint256";
     name: "amount";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "deadline";
     type: "uint256";
   }, {
     internalType: "uint8";
     name: "v";
     type: "uint8";
   }, {
     internalType: "bytes32";
     name: "r";
     type: "bytes32";
   }, {
     internalType: "bytes32";
     name: "s";
     type: "bytes32";
   }, {
     internalType: "address";
     name: "operator";
     type: "address";
   }, {
     internalType: "uint256";
     name: "rateAllowanceIncrease";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "lockupAllowanceIncrease";
     type: "uint256";
  }];
  name: "depositWithPermitAndIncreaseOperatorApproval";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     internalType: "address";
     name: "owner";
     type: "address";
  }];
  name: "getAccountInfoIfSettled";
  outputs: readonly [{
     internalType: "uint256";
     name: "fundedUntilEpoch";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "currentFunds";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "availableFunds";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "currentLockupRate";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
  }];
  name: "getRail";
  outputs: readonly [{
     components: readonly [{
        internalType: "contract IERC20";
        name: "token";
        type: "address";
      }, {
        internalType: "address";
        name: "from";
        type: "address";
      }, {
        internalType: "address";
        name: "to";
        type: "address";
      }, {
        internalType: "address";
        name: "operator";
        type: "address";
      }, {
        internalType: "address";
        name: "validator";
        type: "address";
      }, {
        internalType: "uint256";
        name: "paymentRate";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "lockupPeriod";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "lockupFixed";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "settledUpTo";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "endEpoch";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "commissionRateBps";
        type: "uint256";
      }, {
        internalType: "address";
        name: "serviceFeeRecipient";
        type: "address";
     }];
     internalType: "struct FilecoinPayV1.RailView";
     name: "";
     type: "tuple";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "payee";
     type: "address";
   }, {
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     internalType: "uint256";
     name: "offset";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "limit";
     type: "uint256";
  }];
  name: "getRailsForPayeeAndToken";
  outputs: readonly [{
     components: readonly [{
        internalType: "uint256";
        name: "railId";
        type: "uint256";
      }, {
        internalType: "bool";
        name: "isTerminated";
        type: "bool";
      }, {
        internalType: "uint256";
        name: "endEpoch";
        type: "uint256";
     }];
     internalType: "struct FilecoinPayV1.RailInfo[]";
     name: "results";
     type: "tuple[]";
   }, {
     internalType: "uint256";
     name: "nextOffset";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "total";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "payer";
     type: "address";
   }, {
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     internalType: "uint256";
     name: "offset";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "limit";
     type: "uint256";
  }];
  name: "getRailsForPayerAndToken";
  outputs: readonly [{
     components: readonly [{
        internalType: "uint256";
        name: "railId";
        type: "uint256";
      }, {
        internalType: "bool";
        name: "isTerminated";
        type: "bool";
      }, {
        internalType: "uint256";
        name: "endEpoch";
        type: "uint256";
     }];
     internalType: "struct FilecoinPayV1.RailInfo[]";
     name: "results";
     type: "tuple[]";
   }, {
     internalType: "uint256";
     name: "nextOffset";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "total";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
  }];
  name: "getRateChangeQueueSize";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     internalType: "address";
     name: "operator";
     type: "address";
   }, {
     internalType: "uint256";
     name: "rateAllowanceIncrease";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "lockupAllowanceIncrease";
     type: "uint256";
  }];
  name: "increaseOperatorApproval";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "period";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "lockupFixed";
     type: "uint256";
  }];
  name: "modifyRailLockup";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "newRate";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "oneTimePayment";
     type: "uint256";
  }];
  name: "modifyRailPayment";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     internalType: "address";
     name: "client";
     type: "address";
   }, {
     internalType: "address";
     name: "operator";
     type: "address";
  }];
  name: "operatorApprovals";
  outputs: readonly [{
     internalType: "bool";
     name: "isApproved";
     type: "bool";
   }, {
     internalType: "uint256";
     name: "rateAllowance";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "lockupAllowance";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "rateUsage";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "lockupUsage";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "maxLockupPeriod";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     internalType: "address";
     name: "operator";
     type: "address";
   }, {
     internalType: "bool";
     name: "approved";
     type: "bool";
   }, {
     internalType: "uint256";
     name: "rateAllowance";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "lockupAllowance";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "maxLockupPeriod";
     type: "uint256";
  }];
  name: "setOperatorApproval";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "untilEpoch";
     type: "uint256";
  }];
  name: "settleRail";
  outputs: readonly [{
     internalType: "uint256";
     name: "totalSettledAmount";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "totalNetPayeeAmount";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "totalOperatorCommission";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "totalNetworkFee";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "finalSettledEpoch";
     type: "uint256";
   }, {
     internalType: "string";
     name: "note";
     type: "string";
  }];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
  }];
  name: "settleTerminatedRailWithoutValidation";
  outputs: readonly [{
     internalType: "uint256";
     name: "totalSettledAmount";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "totalNetPayeeAmount";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "totalOperatorCommission";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "totalNetworkFee";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "finalSettledEpoch";
     type: "uint256";
   }, {
     internalType: "string";
     name: "note";
     type: "string";
  }];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
  }];
  name: "terminateRail";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     internalType: "uint256";
     name: "amount";
     type: "uint256";
  }];
  name: "withdraw";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     internalType: "address";
     name: "to";
     type: "address";
   }, {
     internalType: "uint256";
     name: "amount";
     type: "uint256";
  }];
  name: "withdrawTo";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     indexed: true;
     internalType: "address";
     name: "owner";
     type: "address";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "lockupCurrent";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "lockupRate";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "lockupLastSettledAt";
     type: "uint256";
  }];
  name: "AccountLockupSettled";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     indexed: true;
     internalType: "address";
     name: "from";
     type: "address";
   }, {
     indexed: true;
     internalType: "address";
     name: "to";
     type: "address";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "amount";
     type: "uint256";
  }];
  name: "DepositRecorded";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     indexed: true;
     internalType: "address";
     name: "client";
     type: "address";
   }, {
     indexed: true;
     internalType: "address";
     name: "operator";
     type: "address";
   }, {
     indexed: false;
     internalType: "bool";
     name: "approved";
     type: "bool";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "rateAllowance";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "lockupAllowance";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "maxLockupPeriod";
     type: "uint256";
  }];
  name: "OperatorApprovalUpdated";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "railId";
     type: "uint256";
   }, {
     indexed: true;
     internalType: "address";
     name: "payer";
     type: "address";
   }, {
     indexed: true;
     internalType: "address";
     name: "payee";
     type: "address";
   }, {
     indexed: false;
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     indexed: false;
     internalType: "address";
     name: "operator";
     type: "address";
   }, {
     indexed: false;
     internalType: "address";
     name: "validator";
     type: "address";
   }, {
     indexed: false;
     internalType: "address";
     name: "serviceFeeRecipient";
     type: "address";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "commissionRateBps";
     type: "uint256";
  }];
  name: "RailCreated";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "railId";
     type: "uint256";
  }];
  name: "RailFinalized";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "railId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "oldLockupPeriod";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "newLockupPeriod";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "oldLockupFixed";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "newLockupFixed";
     type: "uint256";
  }];
  name: "RailLockupModified";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "railId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "netPayeeAmount";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "operatorCommission";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "networkFee";
     type: "uint256";
  }];
  name: "RailOneTimePaymentProcessed";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "railId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "oldRate";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "newRate";
     type: "uint256";
  }];
  name: "RailRateModified";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "railId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "totalSettledAmount";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "totalNetPayeeAmount";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "operatorCommission";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "networkFee";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "settledUpTo";
     type: "uint256";
  }];
  name: "RailSettled";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "railId";
     type: "uint256";
   }, {
     indexed: true;
     internalType: "address";
     name: "by";
     type: "address";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "endEpoch";
     type: "uint256";
  }];
  name: "RailTerminated";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     indexed: true;
     internalType: "address";
     name: "from";
     type: "address";
   }, {
     indexed: true;
     internalType: "address";
     name: "to";
     type: "address";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "amount";
     type: "uint256";
  }];
  name: "WithdrawRecorded";
  type: "event";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "maxSettlementEpoch";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "blockNumber";
     type: "uint256";
  }];
  name: "CannotModifyTerminatedRailBeyondEndEpoch";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "maxAllowedEpoch";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "attemptedEpoch";
     type: "uint256";
  }];
  name: "CannotSettleFutureEpochs";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "requiredBlock";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "currentBlock";
     type: "uint256";
  }];
  name: "CannotSettleTerminatedRailBeforeMaxEpoch";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "maxAllowed";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "actual";
     type: "uint256";
  }];
  name: "CommissionRateTooHigh";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     internalType: "address";
     name: "from";
     type: "address";
   }, {
     internalType: "uint256";
     name: "oldLockup";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "currentLockup";
     type: "uint256";
  }];
  name: "CurrentLockupLessThanOldLockup";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     internalType: "address";
     name: "from";
     type: "address";
   }, {
     internalType: "uint256";
     name: "currentLockup";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "lockupReduction";
     type: "uint256";
  }];
  name: "InsufficientCurrentLockup";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     internalType: "address";
     name: "from";
     type: "address";
   }, {
     internalType: "uint256";
     name: "required";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "actual";
     type: "uint256";
  }];
  name: "InsufficientFundsForOneTimePayment";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     internalType: "address";
     name: "from";
     type: "address";
   }, {
     internalType: "uint256";
     name: "available";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "required";
     type: "uint256";
  }];
  name: "InsufficientFundsForSettlement";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     internalType: "address";
     name: "from";
     type: "address";
   }, {
     internalType: "uint256";
     name: "available";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "required";
     type: "uint256";
  }];
  name: "InsufficientLockupForSettlement";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "required";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "sent";
     type: "uint256";
  }];
  name: "InsufficientNativeTokenForBurn";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "available";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "requested";
     type: "uint256";
  }];
  name: "InsufficientUnlockedFunds";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "nextRateChangeUntilEpoch";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "processedEpoch";
     type: "uint256";
  }];
  name: "InvalidRateChangeQueueState";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "actualPeriod";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "actualLockupFixed";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "attemptedPeriod";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "attemptedLockupFixed";
     type: "uint256";
  }];
  name: "InvalidTerminatedRailModification";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     internalType: "address";
     name: "account";
     type: "address";
   }, {
     internalType: "uint256";
     name: "lockupCurrent";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "fundsCurrent";
     type: "uint256";
  }];
  name: "LockupExceedsFundsInvariant";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     internalType: "address";
     name: "from";
     type: "address";
   }, {
     internalType: "uint256";
     name: "actualLockupFixed";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "attemptedLockupFixed";
     type: "uint256";
  }];
  name: "LockupFixedIncreaseNotAllowedDueToInsufficientFunds";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
   }, {
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     internalType: "address";
     name: "from";
     type: "address";
   }, {
     internalType: "uint256";
     name: "expectedLockup";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "actualLockup";
     type: "uint256";
  }];
  name: "LockupInconsistencyDuringRailFinalization";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
   }, {
     internalType: "address";
     name: "from";
     type: "address";
   }, {
     internalType: "bool";
     name: "isSettled";
     type: "bool";
   }, {
     internalType: "uint256";
     name: "currentRate";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "attemptedRate";
     type: "uint256";
  }];
  name: "LockupNotSettledRateChangeNotAllowed";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     internalType: "address";
     name: "from";
     type: "address";
   }, {
     internalType: "uint256";
     name: "actualLockupPeriod";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "attemptedLockupPeriod";
     type: "uint256";
  }];
  name: "LockupPeriodChangeNotAllowedDueToInsufficientFunds";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     internalType: "address";
     name: "operator";
     type: "address";
   }, {
     internalType: "uint256";
     name: "maxAllowedPeriod";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "requestedPeriod";
     type: "uint256";
  }];
  name: "LockupPeriodExceedsOperatorMaximum";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
   }, {
     internalType: "address";
     name: "from";
     type: "address";
   }, {
     internalType: "uint256";
     name: "paymentRate";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "lockupRate";
     type: "uint256";
  }];
  name: "LockupRateInconsistent";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
   }, {
     internalType: "address";
     name: "from";
     type: "address";
   }, {
     internalType: "uint256";
     name: "lockupRate";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "oldRate";
     type: "uint256";
  }];
  name: "LockupRateLessThanOldRate";
  type: "error";
}, {
  inputs: readonly [];
  name: "MissingServiceFeeRecipient";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "required";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "sent";
     type: "uint256";
  }];
  name: "MustSendExactNativeAmount";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "sent";
     type: "uint256";
  }];
  name: "NativeTokenNotAccepted";
  type: "error";
}, {
  inputs: readonly [];
  name: "NativeTokenNotSupported";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "to";
     type: "address";
   }, {
     internalType: "uint256";
     name: "amount";
     type: "uint256";
  }];
  name: "NativeTransferFailed";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "expectedSettledUpTo";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "actualSettledUpTo";
     type: "uint256";
  }];
  name: "NoProgressInSettlement";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
   }, {
     internalType: "address";
     name: "allowedClient";
     type: "address";
   }, {
     internalType: "address";
     name: "allowedOperator";
     type: "address";
   }, {
     internalType: "address";
     name: "caller";
     type: "address";
  }];
  name: "NotAuthorizedToTerminateRail";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "available";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "required";
     type: "uint256";
  }];
  name: "OneTimePaymentExceedsLockup";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "expected";
     type: "address";
   }, {
     internalType: "address";
     name: "caller";
     type: "address";
  }];
  name: "OnlyRailClientAllowed";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "expected";
     type: "address";
   }, {
     internalType: "address";
     name: "caller";
     type: "address";
  }];
  name: "OnlyRailOperatorAllowed";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "allowed";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "attemptedUsage";
     type: "uint256";
  }];
  name: "OperatorLockupAllowanceExceeded";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "from";
     type: "address";
   }, {
     internalType: "address";
     name: "operator";
     type: "address";
  }];
  name: "OperatorNotApproved";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "allowed";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "attemptedUsage";
     type: "uint256";
  }];
  name: "OperatorRateAllowanceExceeded";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "x";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "y";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "denominator";
     type: "uint256";
  }];
  name: "PRBMath_MulDiv_Overflow";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "UD60x18";
     name: "x";
     type: "uint256";
  }];
  name: "PRBMath_UD60x18_Exp2_InputTooBig";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
  }];
  name: "RailAlreadyTerminated";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
  }];
  name: "RailInactiveOrSettled";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
  }];
  name: "RailNotTerminated";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
  }];
  name: "RateChangeNotAllowedOnTerminatedRail";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "nextUntilEpoch";
     type: "uint256";
  }];
  name: "RateChangeQueueNotEmpty";
  type: "error";
}, {
  inputs: readonly [];
  name: "ReentrancyGuardReentrantCall";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "token";
     type: "address";
  }];
  name: "SafeERC20FailedOperation";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "expected";
     type: "address";
   }, {
     internalType: "address";
     name: "actual";
     type: "address";
  }];
  name: "SignerMustBeMsgSender";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "maxAllowed";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "attempted";
     type: "uint256";
  }];
  name: "ValidatorModifiedAmountExceedsMaximum";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "allowedStart";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "attemptedStart";
     type: "uint256";
  }];
  name: "ValidatorSettledBeforeSegmentStart";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "allowedEnd";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "attemptedEnd";
     type: "uint256";
  }];
  name: "ValidatorSettledBeyondSegmentEnd";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "contract IERC20";
     name: "token";
     type: "address";
   }, {
     internalType: "uint256";
     name: "available";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "requested";
     type: "uint256";
  }];
  name: "WithdrawAmountExceedsAccumulatedFees";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "string";
     name: "varName";
     type: "string";
  }];
  name: "ZeroAddressNotAllowed";
  type: "error";
}];
```

Defined in: [packages/synapse-core/src/abis/generated.ts:471](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-core/src/abis/generated.ts#L471)

- [__View Contract on Filecoin Mainnet Filfox__](https://filfox.info/en/address/0x23b1e018F08BB982348b15a86ee926eEBf7F4DAa)
- [__View Contract on Filecoin Calibration Filscan__](https://calibration.filscan.io/address/0x09a0fDc2723fAd1A7b8e3e00eE5DF73841df55a0)