# CONTRACT_ABIS

```ts
const CONTRACT_ABIS: object;
```

Defined in: [packages/synapse-sdk/src/utils/constants.ts:30](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/utils/constants.ts#L30)

Contract ABIs

## Type Declaration

### ERC20

```ts
readonly ERC20: readonly [{
  inputs: readonly [{
     indexed: true;
     name: "owner";
     type: "address";
   }, {
     indexed: true;
     name: "spender";
     type: "address";
   }, {
     indexed: false;
     name: "value";
     type: "uint256";
  }];
  name: "Approval";
  type: "event";
}, {
  inputs: readonly [{
     indexed: true;
     name: "from";
     type: "address";
   }, {
     indexed: true;
     name: "to";
     type: "address";
   }, {
     indexed: false;
     name: "value";
     type: "uint256";
  }];
  name: "Transfer";
  type: "event";
}, {
  inputs: readonly [{
     name: "owner";
     type: "address";
   }, {
     name: "spender";
     type: "address";
  }];
  name: "allowance";
  outputs: readonly [{
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     name: "spender";
     type: "address";
   }, {
     name: "amount";
     type: "uint256";
  }];
  name: "approve";
  outputs: readonly [{
     type: "bool";
  }];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     name: "account";
     type: "address";
  }];
  name: "balanceOf";
  outputs: readonly [{
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "decimals";
  outputs: readonly [{
     type: "uint8";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "name";
  outputs: readonly [{
     type: "string";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "symbol";
  outputs: readonly [{
     type: "string";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "totalSupply";
  outputs: readonly [{
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     name: "recipient";
     type: "address";
   }, {
     name: "amount";
     type: "uint256";
  }];
  name: "transfer";
  outputs: readonly [{
     type: "bool";
  }];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     name: "sender";
     type: "address";
   }, {
     name: "recipient";
     type: "address";
   }, {
     name: "amount";
     type: "uint256";
  }];
  name: "transferFrom";
  outputs: readonly [{
     type: "bool";
  }];
  stateMutability: "nonpayable";
  type: "function";
}] = erc20Abi;
```

ERC20 ABI - minimal interface needed for balance and approval operations

### ERC20\_PERMIT

```ts
readonly ERC20_PERMIT: readonly [{
  inputs: readonly [{
     indexed: true;
     name: "owner";
     type: "address";
   }, {
     indexed: true;
     name: "spender";
     type: "address";
   }, {
     indexed: false;
     name: "value";
     type: "uint256";
  }];
  name: "Approval";
  type: "event";
}, {
  inputs: readonly [{
     indexed: true;
     name: "from";
     type: "address";
   }, {
     indexed: true;
     name: "to";
     type: "address";
   }, {
     indexed: false;
     name: "value";
     type: "uint256";
  }];
  name: "Transfer";
  type: "event";
}, {
  inputs: readonly [{
     name: "owner";
     type: "address";
   }, {
     name: "spender";
     type: "address";
  }];
  name: "allowance";
  outputs: readonly [{
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     name: "spender";
     type: "address";
   }, {
     name: "amount";
     type: "uint256";
  }];
  name: "approve";
  outputs: readonly [{
     type: "bool";
  }];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     name: "account";
     type: "address";
  }];
  name: "balanceOf";
  outputs: readonly [{
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "decimals";
  outputs: readonly [{
     type: "uint8";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "name";
  outputs: readonly [{
     type: "string";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "symbol";
  outputs: readonly [{
     type: "string";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "totalSupply";
  outputs: readonly [{
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     name: "recipient";
     type: "address";
   }, {
     name: "amount";
     type: "uint256";
  }];
  name: "transfer";
  outputs: readonly [{
     type: "bool";
  }];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     name: "sender";
     type: "address";
   }, {
     name: "recipient";
     type: "address";
   }, {
     name: "amount";
     type: "uint256";
  }];
  name: "transferFrom";
  outputs: readonly [{
     type: "bool";
  }];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     name: "owner";
     type: "address";
  }];
  name: "nonces";
  outputs: readonly [{
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "version";
  outputs: readonly [{
     name: "";
     type: "string";
  }];
  stateMutability: "view";
  type: "function";
}] = Abis.erc20WithPermit;
```

Minimal ERC20Permit ABI - for reading nonces() and version()

### MULTICALL3

```ts
readonly MULTICALL3: readonly [{
  inputs: readonly [{
     components: readonly [{
        name: "target";
        type: "address";
      }, {
        name: "allowFailure";
        type: "bool";
      }, {
        name: "callData";
        type: "bytes";
     }];
     name: "calls";
     type: "tuple[]";
  }];
  name: "aggregate3";
  outputs: readonly [{
     components: readonly [{
        name: "success";
        type: "bool";
      }, {
        name: "returnData";
        type: "bytes";
     }];
     name: "returnData";
     type: "tuple[]";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "getCurrentBlockTimestamp";
  outputs: readonly [{
     internalType: "uint256";
     name: "timestamp";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}] = multicall3Abi;
```

Multicall3 ABI - for batching multiple contract calls into a single RPC request

### PAYMENTS

```ts
readonly PAYMENTS: 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";
}] = Abis.payments;
```

Payments contract ABI - based on fws-payments contract

### PDP\_VERIFIER

```ts
readonly PDP_VERIFIER: readonly [{
  inputs: readonly [];
  stateMutability: "nonpayable";
  type: "constructor";
}, {
  inputs: readonly [];
  name: "MAX_ENQUEUED_REMOVALS";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "MAX_PIECE_SIZE_LOG2";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "NO_CHALLENGE_SCHEDULED";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "NO_PROVEN_EPOCH";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "UPGRADE_INTERFACE_VERSION";
  outputs: readonly [{
     internalType: "string";
     name: "";
     type: "string";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "VERSION";
  outputs: readonly [{
     internalType: "string";
     name: "";
     type: "string";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "setId";
     type: "uint256";
   }, {
     internalType: "address";
     name: "listenerAddr";
     type: "address";
   }, {
     components: readonly [{
        internalType: "bytes";
        name: "data";
        type: "bytes";
     }];
     internalType: "struct Cids.Cid[]";
     name: "pieceData";
     type: "tuple[]";
   }, {
     internalType: "bytes";
     name: "extraData";
     type: "bytes";
  }];
  name: "addPieces";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "payable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "setId";
     type: "uint256";
  }];
  name: "calculateProofFee";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "proofSize";
     type: "uint256";
  }];
  name: "calculateProofFeeForSize";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "setId";
     type: "uint256";
   }, {
     internalType: "bytes";
     name: "extraData";
     type: "bytes";
  }];
  name: "claimDataSetStorageProvider";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "listenerAddr";
     type: "address";
   }, {
     internalType: "bytes";
     name: "extraData";
     type: "bytes";
  }];
  name: "createDataSet";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "payable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "setId";
     type: "uint256";
  }];
  name: "dataSetLive";
  outputs: readonly [{
     internalType: "bool";
     name: "";
     type: "bool";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "setId";
     type: "uint256";
   }, {
     internalType: "bytes";
     name: "extraData";
     type: "bytes";
  }];
  name: "deleteDataSet";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [];
  name: "feeEffectiveTime";
  outputs: readonly [{
     internalType: "uint64";
     name: "";
     type: "uint64";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "feePerTiB";
  outputs: readonly [{
     internalType: "uint96";
     name: "";
     type: "uint96";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "setId";
     type: "uint256";
   }, {
     internalType: "uint256[]";
     name: "leafIndexs";
     type: "uint256[]";
  }];
  name: "findPieceIds";
  outputs: readonly [{
     components: readonly [{
        internalType: "uint256";
        name: "pieceId";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "offset";
        type: "uint256";
     }];
     internalType: "struct IPDPTypes.PieceIdAndOffset[]";
     name: "";
     type: "tuple[]";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "setId";
     type: "uint256";
  }];
  name: "getActivePieceCount";
  outputs: readonly [{
     internalType: "uint256";
     name: "activeCount";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "setId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "offset";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "limit";
     type: "uint256";
  }];
  name: "getActivePieces";
  outputs: readonly [{
     components: readonly [{
        internalType: "bytes";
        name: "data";
        type: "bytes";
     }];
     internalType: "struct Cids.Cid[]";
     name: "pieces";
     type: "tuple[]";
   }, {
     internalType: "uint256[]";
     name: "pieceIds";
     type: "uint256[]";
   }, {
     internalType: "bool";
     name: "hasMore";
     type: "bool";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "getChallengeFinality";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "setId";
     type: "uint256";
  }];
  name: "getChallengeRange";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "setId";
     type: "uint256";
  }];
  name: "getDataSetLastProvenEpoch";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "setId";
     type: "uint256";
  }];
  name: "getDataSetLeafCount";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "setId";
     type: "uint256";
  }];
  name: "getDataSetListener";
  outputs: readonly [{
     internalType: "address";
     name: "";
     type: "address";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "setId";
     type: "uint256";
  }];
  name: "getDataSetStorageProvider";
  outputs: readonly [{
     internalType: "address";
     name: "";
     type: "address";
   }, {
     internalType: "address";
     name: "";
     type: "address";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "setId";
     type: "uint256";
  }];
  name: "getNextChallengeEpoch";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "getNextDataSetId";
  outputs: readonly [{
     internalType: "uint64";
     name: "";
     type: "uint64";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "setId";
     type: "uint256";
  }];
  name: "getNextPieceId";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "setId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "pieceId";
     type: "uint256";
  }];
  name: "getPieceCid";
  outputs: readonly [{
     components: readonly [{
        internalType: "bytes";
        name: "data";
        type: "bytes";
     }];
     internalType: "struct Cids.Cid";
     name: "";
     type: "tuple";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "setId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "pieceId";
     type: "uint256";
  }];
  name: "getPieceLeafCount";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "epoch";
     type: "uint256";
  }];
  name: "getRandomness";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "setId";
     type: "uint256";
  }];
  name: "getScheduledRemovals";
  outputs: readonly [{
     internalType: "uint256[]";
     name: "";
     type: "uint256[]";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "_challengeFinality";
     type: "uint256";
  }];
  name: "initialize";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [];
  name: "migrate";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "setId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "challengeEpoch";
     type: "uint256";
   }, {
     internalType: "bytes";
     name: "extraData";
     type: "bytes";
  }];
  name: "nextProvingPeriod";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [];
  name: "owner";
  outputs: readonly [{
     internalType: "address";
     name: "";
     type: "address";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "setId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "pieceId";
     type: "uint256";
  }];
  name: "pieceChallengable";
  outputs: readonly [{
     internalType: "bool";
     name: "";
     type: "bool";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "setId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "pieceId";
     type: "uint256";
  }];
  name: "pieceLive";
  outputs: readonly [{
     internalType: "bool";
     name: "";
     type: "bool";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "setId";
     type: "uint256";
   }, {
     internalType: "address";
     name: "newStorageProvider";
     type: "address";
  }];
  name: "proposeDataSetStorageProvider";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [];
  name: "proposedFeePerTiB";
  outputs: readonly [{
     internalType: "uint96";
     name: "";
     type: "uint96";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "setId";
     type: "uint256";
   }, {
     components: readonly [{
        internalType: "bytes32";
        name: "leaf";
        type: "bytes32";
      }, {
        internalType: "bytes32[]";
        name: "proof";
        type: "bytes32[]";
     }];
     internalType: "struct IPDPTypes.Proof[]";
     name: "proofs";
     type: "tuple[]";
  }];
  name: "provePossession";
  outputs: readonly [];
  stateMutability: "payable";
  type: "function";
}, {
  inputs: readonly [];
  name: "proxiableUUID";
  outputs: readonly [{
     internalType: "bytes32";
     name: "";
     type: "bytes32";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "renounceOwnership";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "setId";
     type: "uint256";
   }, {
     internalType: "uint256[]";
     name: "pieceIds";
     type: "uint256[]";
   }, {
     internalType: "bytes";
     name: "extraData";
     type: "bytes";
  }];
  name: "schedulePieceDeletions";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "newOwner";
     type: "address";
  }];
  name: "transferOwnership";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "newFeePerTiB";
     type: "uint256";
  }];
  name: "updateProofFee";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "newImplementation";
     type: "address";
   }, {
     internalType: "bytes";
     name: "data";
     type: "bytes";
  }];
  name: "upgradeToAndCall";
  outputs: readonly [];
  stateMutability: "payable";
  type: "function";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: false;
     internalType: "string";
     name: "version";
     type: "string";
   }, {
     indexed: false;
     internalType: "address";
     name: "implementation";
     type: "address";
  }];
  name: "ContractUpgraded";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "setId";
     type: "uint256";
   }, {
     indexed: true;
     internalType: "address";
     name: "storageProvider";
     type: "address";
  }];
  name: "DataSetCreated";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "setId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "deletedLeafCount";
     type: "uint256";
  }];
  name: "DataSetDeleted";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "setId";
     type: "uint256";
  }];
  name: "DataSetEmpty";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: false;
     internalType: "uint256";
     name: "currentFee";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "newFee";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "effectiveTime";
     type: "uint256";
  }];
  name: "FeeUpdateProposed";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: false;
     internalType: "uint64";
     name: "version";
     type: "uint64";
  }];
  name: "Initialized";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "setId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "challengeEpoch";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "leafCount";
     type: "uint256";
  }];
  name: "NextProvingPeriod";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "address";
     name: "previousOwner";
     type: "address";
   }, {
     indexed: true;
     internalType: "address";
     name: "newOwner";
     type: "address";
  }];
  name: "OwnershipTransferred";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "setId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256[]";
     name: "pieceIds";
     type: "uint256[]";
   }, {
     components: readonly [{
        internalType: "bytes";
        name: "data";
        type: "bytes";
     }];
     indexed: false;
     internalType: "struct Cids.Cid[]";
     name: "pieceCids";
     type: "tuple[]";
  }];
  name: "PiecesAdded";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "setId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256[]";
     name: "pieceIds";
     type: "uint256[]";
  }];
  name: "PiecesRemoved";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "setId";
     type: "uint256";
   }, {
     components: readonly [{
        internalType: "uint256";
        name: "pieceId";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "offset";
        type: "uint256";
     }];
     indexed: false;
     internalType: "struct IPDPTypes.PieceIdAndOffset[]";
     name: "challenges";
     type: "tuple[]";
  }];
  name: "PossessionProven";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "setId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "fee";
     type: "uint256";
  }];
  name: "ProofFeePaid";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "setId";
     type: "uint256";
   }, {
     indexed: true;
     internalType: "address";
     name: "oldStorageProvider";
     type: "address";
   }, {
     indexed: true;
     internalType: "address";
     name: "newStorageProvider";
     type: "address";
  }];
  name: "StorageProviderChanged";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "address";
     name: "implementation";
     type: "address";
  }];
  name: "Upgraded";
  type: "event";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "target";
     type: "address";
  }];
  name: "AddressEmptyCode";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "implementation";
     type: "address";
  }];
  name: "ERC1967InvalidImplementation";
  type: "error";
}, {
  inputs: readonly [];
  name: "ERC1967NonPayable";
  type: "error";
}, {
  inputs: readonly [];
  name: "FailedCall";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "idx";
     type: "uint256";
   }, {
     internalType: "string";
     name: "msg";
     type: "string";
  }];
  name: "IndexedError";
  type: "error";
}, {
  inputs: readonly [];
  name: "InvalidInitialization";
  type: "error";
}, {
  inputs: readonly [];
  name: "NotInitializing";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "owner";
     type: "address";
  }];
  name: "OwnableInvalidOwner";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "account";
     type: "address";
  }];
  name: "OwnableUnauthorizedAccount";
  type: "error";
}, {
  inputs: readonly [];
  name: "UUPSUnauthorizedCallContext";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "bytes32";
     name: "slot";
     type: "bytes32";
  }];
  name: "UUPSUnsupportedProxiableUUID";
  type: "error";
}] = Abis.pdp;
```

PDPVerifier contract ABI - core PDP verification functions

### SERVICE\_PROVIDER\_REGISTRY

```ts
readonly SERVICE_PROVIDER_REGISTRY: readonly [{
  inputs: readonly [];
  stateMutability: "nonpayable";
  type: "constructor";
}, {
  inputs: readonly [];
  name: "MAX_CAPABILITIES";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "MAX_CAPABILITY_KEY_LENGTH";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "MAX_CAPABILITY_VALUE_LENGTH";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "REGISTRATION_FEE";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "UPGRADE_INTERFACE_VERSION";
  outputs: readonly [{
     internalType: "string";
     name: "";
     type: "string";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "VERSION";
  outputs: readonly [{
     internalType: "string";
     name: "";
     type: "string";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "enum ServiceProviderRegistryStorage.ProductType";
     name: "productType";
     type: "uint8";
  }];
  name: "activeProductTypeProviderCount";
  outputs: readonly [{
     internalType: "uint256";
     name: "count";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "activeProviderCount";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "enum ServiceProviderRegistryStorage.ProductType";
     name: "productType";
     type: "uint8";
   }, {
     internalType: "string[]";
     name: "capabilityKeys";
     type: "string[]";
   }, {
     internalType: "bytes[]";
     name: "capabilityValues";
     type: "bytes[]";
  }];
  name: "addProduct";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "providerAddress";
     type: "address";
  }];
  name: "addressToProviderId";
  outputs: readonly [{
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "eip712Domain";
  outputs: readonly [{
     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: readonly [{
     internalType: "uint256";
     name: "offset";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "limit";
     type: "uint256";
  }];
  name: "getAllActiveProviders";
  outputs: readonly [{
     internalType: "uint256[]";
     name: "providerIds";
     type: "uint256[]";
   }, {
     internalType: "bool";
     name: "hasMore";
     type: "bool";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
   }, {
     internalType: "enum ServiceProviderRegistryStorage.ProductType";
     name: "productType";
     type: "uint8";
  }];
  name: "getAllProductCapabilities";
  outputs: readonly [{
     internalType: "bool";
     name: "isActive";
     type: "bool";
   }, {
     internalType: "string[]";
     name: "keys";
     type: "string[]";
   }, {
     internalType: "bytes[]";
     name: "values";
     type: "bytes[]";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "getNextProviderId";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
   }, {
     internalType: "enum ServiceProviderRegistryStorage.ProductType";
     name: "productType";
     type: "uint8";
   }, {
     internalType: "string[]";
     name: "keys";
     type: "string[]";
  }];
  name: "getProductCapabilities";
  outputs: readonly [{
     internalType: "bytes[]";
     name: "values";
     type: "bytes[]";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
  }];
  name: "getProvider";
  outputs: readonly [{
     components: readonly [{
        internalType: "uint256";
        name: "providerId";
        type: "uint256";
      }, {
        components: readonly [{
           internalType: "address";
           name: "serviceProvider";
           type: "address";
         }, {
           internalType: "address";
           name: "payee";
           type: "address";
         }, {
           internalType: "string";
           name: "name";
           type: "string";
         }, {
           internalType: "string";
           name: "description";
           type: "string";
         }, {
           internalType: "bool";
           name: "isActive";
           type: "bool";
        }];
        internalType: "struct ServiceProviderRegistryStorage.ServiceProviderInfo";
        name: "info";
        type: "tuple";
     }];
     internalType: "struct ServiceProviderRegistry.ServiceProviderInfoView";
     name: "info";
     type: "tuple";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "providerAddress";
     type: "address";
  }];
  name: "getProviderByAddress";
  outputs: readonly [{
     components: readonly [{
        internalType: "uint256";
        name: "providerId";
        type: "uint256";
      }, {
        components: readonly [{
           internalType: "address";
           name: "serviceProvider";
           type: "address";
         }, {
           internalType: "address";
           name: "payee";
           type: "address";
         }, {
           internalType: "string";
           name: "name";
           type: "string";
         }, {
           internalType: "string";
           name: "description";
           type: "string";
         }, {
           internalType: "bool";
           name: "isActive";
           type: "bool";
        }];
        internalType: "struct ServiceProviderRegistryStorage.ServiceProviderInfo";
        name: "info";
        type: "tuple";
     }];
     internalType: "struct ServiceProviderRegistry.ServiceProviderInfoView";
     name: "info";
     type: "tuple";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "getProviderCount";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "providerAddress";
     type: "address";
  }];
  name: "getProviderIdByAddress";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
  }];
  name: "getProviderPayee";
  outputs: readonly [{
     internalType: "address";
     name: "payee";
     type: "address";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
   }, {
     internalType: "enum ServiceProviderRegistryStorage.ProductType";
     name: "productType";
     type: "uint8";
  }];
  name: "getProviderWithProduct";
  outputs: readonly [{
     components: readonly [{
        internalType: "uint256";
        name: "providerId";
        type: "uint256";
      }, {
        components: readonly [{
           internalType: "address";
           name: "serviceProvider";
           type: "address";
         }, {
           internalType: "address";
           name: "payee";
           type: "address";
         }, {
           internalType: "string";
           name: "name";
           type: "string";
         }, {
           internalType: "string";
           name: "description";
           type: "string";
         }, {
           internalType: "bool";
           name: "isActive";
           type: "bool";
        }];
        internalType: "struct ServiceProviderRegistryStorage.ServiceProviderInfo";
        name: "providerInfo";
        type: "tuple";
      }, {
        components: readonly [{
           internalType: "enum ServiceProviderRegistryStorage.ProductType";
           name: "productType";
           type: "uint8";
         }, {
           internalType: "string[]";
           name: "capabilityKeys";
           type: "string[]";
         }, {
           internalType: "bool";
           name: "isActive";
           type: "bool";
        }];
        internalType: "struct ServiceProviderRegistryStorage.ServiceProduct";
        name: "product";
        type: "tuple";
      }, {
        internalType: "bytes[]";
        name: "productCapabilityValues";
        type: "bytes[]";
     }];
     internalType: "struct ServiceProviderRegistryStorage.ProviderWithProduct";
     name: "";
     type: "tuple";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256[]";
     name: "providerIds";
     type: "uint256[]";
  }];
  name: "getProvidersByIds";
  outputs: readonly [{
     components: readonly [{
        internalType: "uint256";
        name: "providerId";
        type: "uint256";
      }, {
        components: readonly [{
           internalType: "address";
           name: "serviceProvider";
           type: "address";
         }, {
           internalType: "address";
           name: "payee";
           type: "address";
         }, {
           internalType: "string";
           name: "name";
           type: "string";
         }, {
           internalType: "string";
           name: "description";
           type: "string";
         }, {
           internalType: "bool";
           name: "isActive";
           type: "bool";
        }];
        internalType: "struct ServiceProviderRegistryStorage.ServiceProviderInfo";
        name: "info";
        type: "tuple";
     }];
     internalType: "struct ServiceProviderRegistry.ServiceProviderInfoView[]";
     name: "providerInfos";
     type: "tuple[]";
   }, {
     internalType: "bool[]";
     name: "validIds";
     type: "bool[]";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "enum ServiceProviderRegistryStorage.ProductType";
     name: "productType";
     type: "uint8";
   }, {
     internalType: "bool";
     name: "onlyActive";
     type: "bool";
   }, {
     internalType: "uint256";
     name: "offset";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "limit";
     type: "uint256";
  }];
  name: "getProvidersByProductType";
  outputs: readonly [{
     components: readonly [{
        components: readonly [{
           internalType: "uint256";
           name: "providerId";
           type: "uint256";
         }, {
           components: readonly [{
              internalType: ...;
              name: ...;
              type: ...;
            }, {
              internalType: ...;
              name: ...;
              type: ...;
            }, {
              internalType: ...;
              name: ...;
              type: ...;
            }, {
              internalType: ...;
              name: ...;
              type: ...;
            }, {
              internalType: ...;
              name: ...;
              type: ...;
           }];
           internalType: "struct ServiceProviderRegistryStorage.ServiceProviderInfo";
           name: "providerInfo";
           type: "tuple";
         }, {
           components: readonly [{
              internalType: ...;
              name: ...;
              type: ...;
            }, {
              internalType: ...;
              name: ...;
              type: ...;
            }, {
              internalType: ...;
              name: ...;
              type: ...;
           }];
           internalType: "struct ServiceProviderRegistryStorage.ServiceProduct";
           name: "product";
           type: "tuple";
         }, {
           internalType: "bytes[]";
           name: "productCapabilityValues";
           type: "bytes[]";
        }];
        internalType: "struct ServiceProviderRegistryStorage.ProviderWithProduct[]";
        name: "providers";
        type: "tuple[]";
      }, {
        internalType: "bool";
        name: "hasMore";
        type: "bool";
     }];
     internalType: "struct ServiceProviderRegistryStorage.PaginatedProviders";
     name: "result";
     type: "tuple";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "initialize";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
  }];
  name: "isProviderActive";
  outputs: readonly [{
     internalType: "bool";
     name: "";
     type: "bool";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "provider";
     type: "address";
  }];
  name: "isRegisteredProvider";
  outputs: readonly [{
     internalType: "bool";
     name: "";
     type: "bool";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "string";
     name: "newVersion";
     type: "string";
  }];
  name: "migrate";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [];
  name: "owner";
  outputs: readonly [{
     internalType: "address";
     name: "";
     type: "address";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
   }, {
     internalType: "enum ServiceProviderRegistryStorage.ProductType";
     name: "productType";
     type: "uint8";
   }, {
     internalType: "string";
     name: "key";
     type: "string";
  }];
  name: "productCapabilities";
  outputs: readonly [{
     internalType: "bytes";
     name: "value";
     type: "bytes";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "enum ServiceProviderRegistryStorage.ProductType";
     name: "productType";
     type: "uint8";
  }];
  name: "productTypeProviderCount";
  outputs: readonly [{
     internalType: "uint256";
     name: "count";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
   }, {
     internalType: "enum ServiceProviderRegistryStorage.ProductType";
     name: "productType";
     type: "uint8";
  }];
  name: "providerHasProduct";
  outputs: readonly [{
     internalType: "bool";
     name: "";
     type: "bool";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
   }, {
     internalType: "enum ServiceProviderRegistryStorage.ProductType";
     name: "productType";
     type: "uint8";
  }];
  name: "providerProducts";
  outputs: readonly [{
     internalType: "enum ServiceProviderRegistryStorage.ProductType";
     name: "productType";
     type: "uint8";
   }, {
     internalType: "bool";
     name: "isActive";
     type: "bool";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
  }];
  name: "providers";
  outputs: readonly [{
     internalType: "address";
     name: "serviceProvider";
     type: "address";
   }, {
     internalType: "address";
     name: "payee";
     type: "address";
   }, {
     internalType: "string";
     name: "name";
     type: "string";
   }, {
     internalType: "string";
     name: "description";
     type: "string";
   }, {
     internalType: "bool";
     name: "isActive";
     type: "bool";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "proxiableUUID";
  outputs: readonly [{
     internalType: "bytes32";
     name: "";
     type: "bytes32";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "payee";
     type: "address";
   }, {
     internalType: "string";
     name: "name";
     type: "string";
   }, {
     internalType: "string";
     name: "description";
     type: "string";
   }, {
     internalType: "enum ServiceProviderRegistryStorage.ProductType";
     name: "productType";
     type: "uint8";
   }, {
     internalType: "string[]";
     name: "capabilityKeys";
     type: "string[]";
   }, {
     internalType: "bytes[]";
     name: "capabilityValues";
     type: "bytes[]";
  }];
  name: "registerProvider";
  outputs: readonly [{
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
  }];
  stateMutability: "payable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "enum ServiceProviderRegistryStorage.ProductType";
     name: "productType";
     type: "uint8";
  }];
  name: "removeProduct";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [];
  name: "removeProvider";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [];
  name: "renounceOwnership";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "newOwner";
     type: "address";
  }];
  name: "transferOwnership";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "enum ServiceProviderRegistryStorage.ProductType";
     name: "productType";
     type: "uint8";
   }, {
     internalType: "string[]";
     name: "capabilityKeys";
     type: "string[]";
   }, {
     internalType: "bytes[]";
     name: "capabilityValues";
     type: "bytes[]";
  }];
  name: "updateProduct";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "string";
     name: "name";
     type: "string";
   }, {
     internalType: "string";
     name: "description";
     type: "string";
  }];
  name: "updateProviderInfo";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "newImplementation";
     type: "address";
   }, {
     internalType: "bytes";
     name: "data";
     type: "bytes";
  }];
  name: "upgradeToAndCall";
  outputs: readonly [];
  stateMutability: "payable";
  type: "function";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: false;
     internalType: "string";
     name: "version";
     type: "string";
   }, {
     indexed: false;
     internalType: "address";
     name: "implementation";
     type: "address";
  }];
  name: "ContractUpgraded";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [];
  name: "EIP712DomainChanged";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: false;
     internalType: "uint64";
     name: "version";
     type: "uint64";
  }];
  name: "Initialized";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "address";
     name: "previousOwner";
     type: "address";
   }, {
     indexed: true;
     internalType: "address";
     name: "newOwner";
     type: "address";
  }];
  name: "OwnershipTransferred";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
   }, {
     indexed: true;
     internalType: "enum ServiceProviderRegistryStorage.ProductType";
     name: "productType";
     type: "uint8";
   }, {
     indexed: false;
     internalType: "address";
     name: "serviceProvider";
     type: "address";
   }, {
     indexed: false;
     internalType: "string[]";
     name: "capabilityKeys";
     type: "string[]";
   }, {
     indexed: false;
     internalType: "bytes[]";
     name: "capabilityValues";
     type: "bytes[]";
  }];
  name: "ProductAdded";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
   }, {
     indexed: true;
     internalType: "enum ServiceProviderRegistryStorage.ProductType";
     name: "productType";
     type: "uint8";
  }];
  name: "ProductRemoved";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
   }, {
     indexed: true;
     internalType: "enum ServiceProviderRegistryStorage.ProductType";
     name: "productType";
     type: "uint8";
   }, {
     indexed: false;
     internalType: "address";
     name: "serviceProvider";
     type: "address";
   }, {
     indexed: false;
     internalType: "string[]";
     name: "capabilityKeys";
     type: "string[]";
   }, {
     indexed: false;
     internalType: "bytes[]";
     name: "capabilityValues";
     type: "bytes[]";
  }];
  name: "ProductUpdated";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
  }];
  name: "ProviderInfoUpdated";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
   }, {
     indexed: true;
     internalType: "address";
     name: "serviceProvider";
     type: "address";
   }, {
     indexed: true;
     internalType: "address";
     name: "payee";
     type: "address";
  }];
  name: "ProviderRegistered";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
  }];
  name: "ProviderRemoved";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "address";
     name: "implementation";
     type: "address";
  }];
  name: "Upgraded";
  type: "event";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "target";
     type: "address";
  }];
  name: "AddressEmptyCode";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "implementation";
     type: "address";
  }];
  name: "ERC1967InvalidImplementation";
  type: "error";
}, {
  inputs: readonly [];
  name: "ERC1967NonPayable";
  type: "error";
}, {
  inputs: readonly [];
  name: "FailedCall";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "enum ServiceProviderRegistryStorage.ProductType";
     name: "productType";
     type: "uint8";
  }];
  name: "InsufficientCapabilitiesForProduct";
  type: "error";
}, {
  inputs: readonly [];
  name: "InvalidInitialization";
  type: "error";
}, {
  inputs: readonly [];
  name: "NotInitializing";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "owner";
     type: "address";
  }];
  name: "OwnableInvalidOwner";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "account";
     type: "address";
  }];
  name: "OwnableUnauthorizedAccount";
  type: "error";
}, {
  inputs: readonly [];
  name: "UUPSUnauthorizedCallContext";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "bytes32";
     name: "slot";
     type: "bytes32";
  }];
  name: "UUPSUnsupportedProxiableUUID";
  type: "error";
}] = Abis.serviceProviderRegistry;
```

ServiceProviderRegistry ABI - for provider management

### SESSION\_KEY\_REGISTRY

```ts
readonly SESSION_KEY_REGISTRY: readonly [{
  inputs: readonly [{
     internalType: "address";
     name: "user";
     type: "address";
   }, {
     internalType: "address";
     name: "signer";
     type: "address";
   }, {
     internalType: "bytes32";
     name: "permission";
     type: "bytes32";
  }];
  name: "authorizationExpiry";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "signer";
     type: "address";
   }, {
     internalType: "uint256";
     name: "expiry";
     type: "uint256";
   }, {
     internalType: "bytes32[]";
     name: "permissions";
     type: "bytes32[]";
   }, {
     internalType: "string";
     name: "origin";
     type: "string";
  }];
  name: "login";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address payable";
     name: "signer";
     type: "address";
   }, {
     internalType: "uint256";
     name: "expiry";
     type: "uint256";
   }, {
     internalType: "bytes32[]";
     name: "permissions";
     type: "bytes32[]";
   }, {
     internalType: "string";
     name: "origin";
     type: "string";
  }];
  name: "loginAndFund";
  outputs: readonly [];
  stateMutability: "payable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "signer";
     type: "address";
   }, {
     internalType: "bytes32[]";
     name: "permissions";
     type: "bytes32[]";
   }, {
     internalType: "string";
     name: "origin";
     type: "string";
  }];
  name: "revoke";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "address";
     name: "identity";
     type: "address";
   }, {
     indexed: false;
     internalType: "address";
     name: "signer";
     type: "address";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "expiry";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "bytes32[]";
     name: "permissions";
     type: "bytes32[]";
   }, {
     indexed: false;
     internalType: "string";
     name: "origin";
     type: "string";
  }];
  name: "AuthorizationsUpdated";
  type: "event";
}] = Abis.sessionKeyRegistry;
```

SessionKeyRegistry ABI - for session key management

### WARM\_STORAGE

```ts
readonly WARM_STORAGE: readonly [{
  inputs: readonly [{
     internalType: "address";
     name: "_pdpVerifierAddress";
     type: "address";
   }, {
     internalType: "address";
     name: "_paymentsContractAddress";
     type: "address";
   }, {
     internalType: "contract IERC20Metadata";
     name: "_usdfc";
     type: "address";
   }, {
     internalType: "address";
     name: "_filBeamBeneficiaryAddress";
     type: "address";
   }, {
     internalType: "contract ServiceProviderRegistry";
     name: "_serviceProviderRegistry";
     type: "address";
   }, {
     internalType: "contract SessionKeyRegistry";
     name: "_sessionKeyRegistry";
     type: "address";
  }];
  stateMutability: "nonpayable";
  type: "constructor";
}, {
  inputs: readonly [];
  name: "UPGRADE_INTERFACE_VERSION";
  outputs: readonly [{
     internalType: "string";
     name: "";
     type: "string";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "VERSION";
  outputs: readonly [{
     internalType: "string";
     name: "";
     type: "string";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
  }];
  name: "addApprovedProvider";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     components: readonly [{
        internalType: "address";
        name: "nextImplementation";
        type: "address";
      }, {
        internalType: "uint96";
        name: "afterEpoch";
        type: "uint96";
     }];
     internalType: "struct FilecoinWarmStorageService.PlannedUpgrade";
     name: "plannedUpgrade";
     type: "tuple";
  }];
  name: "announcePlannedUpgrade";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "totalBytes";
     type: "uint256";
  }];
  name: "calculateRatePerEpoch";
  outputs: readonly [{
     internalType: "uint256";
     name: "storageRate";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint64";
     name: "_maxProvingPeriod";
     type: "uint64";
   }, {
     internalType: "uint256";
     name: "_challengeWindowSize";
     type: "uint256";
  }];
  name: "configureProvingPeriod";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "address";
     name: "serviceProvider";
     type: "address";
   }, {
     internalType: "bytes";
     name: "extraData";
     type: "bytes";
  }];
  name: "dataSetCreated";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "";
     type: "uint256";
   }, {
     internalType: "bytes";
     name: "";
     type: "bytes";
  }];
  name: "dataSetDeleted";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [];
  name: "eip712Domain";
  outputs: readonly [{
     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: readonly [{
     internalType: "bytes32";
     name: "slot";
     type: "bytes32";
  }];
  name: "extsload";
  outputs: readonly [{
     internalType: "bytes32";
     name: "";
     type: "bytes32";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "bytes32";
     name: "slot";
     type: "bytes32";
   }, {
     internalType: "uint256";
     name: "size";
     type: "uint256";
  }];
  name: "extsloadStruct";
  outputs: readonly [{
     internalType: "bytes32[]";
     name: "";
     type: "bytes32[]";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "filBeamBeneficiaryAddress";
  outputs: readonly [{
     internalType: "address";
     name: "";
     type: "address";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "getEffectiveRates";
  outputs: readonly [{
     internalType: "uint256";
     name: "serviceFee";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "spPayment";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "epoch";
     type: "uint256";
  }];
  name: "getProvingPeriodForEpoch";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "getServicePrice";
  outputs: readonly [{
     components: readonly [{
        internalType: "uint256";
        name: "pricePerTiBPerMonthNoCDN";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "pricePerTiBCdnEgress";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "pricePerTiBCacheMissEgress";
        type: "uint256";
      }, {
        internalType: "contract IERC20";
        name: "tokenAddress";
        type: "address";
      }, {
        internalType: "uint256";
        name: "epochsPerMonth";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "minimumPricePerMonth";
        type: "uint256";
     }];
     internalType: "struct FilecoinWarmStorageService.ServicePricing";
     name: "pricing";
     type: "tuple";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint64";
     name: "_maxProvingPeriod";
     type: "uint64";
   }, {
     internalType: "uint256";
     name: "_challengeWindowSize";
     type: "uint256";
   }, {
     internalType: "address";
     name: "_filBeamControllerAddress";
     type: "address";
   }, {
     internalType: "string";
     name: "_name";
     type: "string";
   }, {
     internalType: "string";
     name: "_description";
     type: "string";
  }];
  name: "initialize";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "_viewContract";
     type: "address";
  }];
  name: "migrate";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "challengeEpoch";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "leafCount";
     type: "uint256";
   }, {
     internalType: "bytes";
     name: "";
     type: "bytes";
  }];
  name: "nextProvingPeriod";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [];
  name: "owner";
  outputs: readonly [{
     internalType: "address";
     name: "";
     type: "address";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "paymentsContractAddress";
  outputs: readonly [{
     internalType: "address";
     name: "";
     type: "address";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "pdpVerifierAddress";
  outputs: readonly [{
     internalType: "address";
     name: "";
     type: "address";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "firstAdded";
     type: "uint256";
   }, {
     components: readonly [{
        internalType: "bytes";
        name: "data";
        type: "bytes";
     }];
     internalType: "struct Cids.Cid[]";
     name: "pieceData";
     type: "tuple[]";
   }, {
     internalType: "bytes";
     name: "extraData";
     type: "bytes";
  }];
  name: "piecesAdded";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "uint256[]";
     name: "pieceIds";
     type: "uint256[]";
   }, {
     internalType: "bytes";
     name: "extraData";
     type: "bytes";
  }];
  name: "piecesScheduledRemove";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "challengeCount";
     type: "uint256";
  }];
  name: "possessionProven";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [];
  name: "proxiableUUID";
  outputs: readonly [{
     internalType: "bytes32";
     name: "";
     type: "bytes32";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
   }, {
     internalType: "address";
     name: "terminator";
     type: "address";
   }, {
     internalType: "uint256";
     name: "endEpoch";
     type: "uint256";
  }];
  name: "railTerminated";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "index";
     type: "uint256";
  }];
  name: "removeApprovedProvider";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [];
  name: "renounceOwnership";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [];
  name: "serviceProviderRegistry";
  outputs: readonly [{
     internalType: "contract ServiceProviderRegistry";
     name: "";
     type: "address";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "sessionKeyRegistry";
  outputs: readonly [{
     internalType: "contract SessionKeyRegistry";
     name: "";
     type: "address";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "_viewContract";
     type: "address";
  }];
  name: "setViewContract";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "cdnAmount";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "cacheMissAmount";
     type: "uint256";
  }];
  name: "settleFilBeamPaymentRails";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
   }, {
     internalType: "address";
     name: "";
     type: "address";
   }, {
     internalType: "address";
     name: "";
     type: "address";
   }, {
     internalType: "bytes";
     name: "";
     type: "bytes";
  }];
  name: "storageProviderChanged";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "terminateCDNService";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "terminateService";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "cdnAmountToAdd";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "cacheMissAmountToAdd";
     type: "uint256";
  }];
  name: "topUpCDNPaymentRails";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "newController";
     type: "address";
  }];
  name: "transferFilBeamController";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "newOwner";
     type: "address";
  }];
  name: "transferOwnership";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "newStoragePrice";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "newMinimumRate";
     type: "uint256";
  }];
  name: "updatePricing";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "newCommissionBps";
     type: "uint256";
  }];
  name: "updateServiceCommission";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "newImplementation";
     type: "address";
   }, {
     internalType: "bytes";
     name: "data";
     type: "bytes";
  }];
  name: "upgradeToAndCall";
  outputs: readonly [];
  stateMutability: "payable";
  type: "function";
}, {
  inputs: readonly [];
  name: "usdfcTokenAddress";
  outputs: readonly [{
     internalType: "contract IERC20Metadata";
     name: "";
     type: "address";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "proposedAmount";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "fromEpoch";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "toEpoch";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  name: "validatePayment";
  outputs: readonly [{
     components: readonly [{
        internalType: "uint256";
        name: "modifiedAmount";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "settleUpto";
        type: "uint256";
      }, {
        internalType: "string";
        name: "note";
        type: "string";
     }];
     internalType: "struct IValidator.ValidationResult";
     name: "result";
     type: "tuple";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "viewContractAddress";
  outputs: readonly [{
     internalType: "address";
     name: "";
     type: "address";
  }];
  stateMutability: "view";
  type: "function";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "cdnAmountAdded";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "totalCdnLockup";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "cacheMissAmountAdded";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "totalCacheMissLockup";
     type: "uint256";
  }];
  name: "CDNPaymentRailsToppedUp";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "endEpoch";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "cacheMissRailId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "cdnRailId";
     type: "uint256";
  }];
  name: "CDNPaymentTerminated";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "address";
     name: "caller";
     type: "address";
   }, {
     indexed: true;
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "cacheMissRailId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "cdnRailId";
     type: "uint256";
  }];
  name: "CDNServiceTerminated";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: false;
     internalType: "string";
     name: "version";
     type: "string";
   }, {
     indexed: false;
     internalType: "address";
     name: "implementation";
     type: "address";
  }];
  name: "ContractUpgraded";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     indexed: true;
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "pdpRailId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "cacheMissRailId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "cdnRailId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "address";
     name: "payer";
     type: "address";
   }, {
     indexed: false;
     internalType: "address";
     name: "serviceProvider";
     type: "address";
   }, {
     indexed: false;
     internalType: "address";
     name: "payee";
     type: "address";
   }, {
     indexed: false;
     internalType: "string[]";
     name: "metadataKeys";
     type: "string[]";
   }, {
     indexed: false;
     internalType: "string[]";
     name: "metadataValues";
     type: "string[]";
  }];
  name: "DataSetCreated";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     indexed: true;
     internalType: "address";
     name: "oldServiceProvider";
     type: "address";
   }, {
     indexed: true;
     internalType: "address";
     name: "newServiceProvider";
     type: "address";
  }];
  name: "DataSetServiceProviderChanged";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [];
  name: "EIP712DomainChanged";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "periodsFaulted";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "deadline";
     type: "uint256";
  }];
  name: "FaultRecord";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: false;
     internalType: "address";
     name: "oldController";
     type: "address";
   }, {
     indexed: false;
     internalType: "address";
     name: "newController";
     type: "address";
  }];
  name: "FilBeamControllerChanged";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: false;
     internalType: "string";
     name: "name";
     type: "string";
   }, {
     indexed: false;
     internalType: "string";
     name: "description";
     type: "string";
  }];
  name: "FilecoinServiceDeployed";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: false;
     internalType: "uint64";
     name: "version";
     type: "uint64";
  }];
  name: "Initialized";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "address";
     name: "previousOwner";
     type: "address";
   }, {
     indexed: true;
     internalType: "address";
     name: "newOwner";
     type: "address";
  }];
  name: "OwnershipTransferred";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "endEpoch";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "pdpRailId";
     type: "uint256";
  }];
  name: "PDPPaymentTerminated";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     indexed: true;
     internalType: "uint256";
     name: "pieceId";
     type: "uint256";
   }, {
     components: readonly [{
        internalType: "bytes";
        name: "data";
        type: "bytes";
     }];
     indexed: false;
     internalType: "struct Cids.Cid";
     name: "pieceCid";
     type: "tuple";
   }, {
     indexed: false;
     internalType: "string[]";
     name: "keys";
     type: "string[]";
   }, {
     indexed: false;
     internalType: "string[]";
     name: "values";
     type: "string[]";
  }];
  name: "PieceAdded";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: false;
     internalType: "uint256";
     name: "storagePrice";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "minimumRate";
     type: "uint256";
  }];
  name: "PricingUpdated";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
  }];
  name: "ProviderApproved";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
  }];
  name: "ProviderUnapproved";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "railId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "newRate";
     type: "uint256";
  }];
  name: "RailRateUpdated";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "address";
     name: "caller";
     type: "address";
   }, {
     indexed: true;
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "pdpRailId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "cacheMissRailId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "cdnRailId";
     type: "uint256";
  }];
  name: "ServiceTerminated";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     components: readonly [{
        internalType: "address";
        name: "nextImplementation";
        type: "address";
      }, {
        internalType: "uint96";
        name: "afterEpoch";
        type: "uint96";
     }];
     indexed: false;
     internalType: "struct FilecoinWarmStorageService.PlannedUpgrade";
     name: "plannedUpgrade";
     type: "tuple";
  }];
  name: "UpgradeAnnounced";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "address";
     name: "implementation";
     type: "address";
  }];
  name: "Upgraded";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "address";
     name: "viewContract";
     type: "address";
  }];
  name: "ViewContractSet";
  type: "event";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "target";
     type: "address";
  }];
  name: "AddressEmptyCode";
  type: "error";
}, {
  inputs: readonly [];
  name: "AtLeastOnePriceMustBeNonZero";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "CDNPaymentAlreadyTerminated";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "CacheMissPaymentAlreadyTerminated";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "address";
     name: "expectedPayer";
     type: "address";
   }, {
     internalType: "address";
     name: "caller";
     type: "address";
  }];
  name: "CallerNotPayer";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "address";
     name: "expectedPayer";
     type: "address";
   }, {
     internalType: "address";
     name: "expectedPayee";
     type: "address";
   }, {
     internalType: "address";
     name: "caller";
     type: "address";
  }];
  name: "CallerNotPayerOrPayee";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "expected";
     type: "address";
   }, {
     internalType: "address";
     name: "actual";
     type: "address";
  }];
  name: "CallerNotPayments";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "windowStart";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "nowBlock";
     type: "uint256";
  }];
  name: "ChallengeWindowTooEarly";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "clientDataSetId";
     type: "uint256";
  }];
  name: "ClientDataSetAlreadyRegistered";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "enum Errors.CommissionType";
     name: "commissionType";
     type: "uint8";
   }, {
     internalType: "uint256";
     name: "max";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "actual";
     type: "uint256";
  }];
  name: "CommissionExceedsMaximum";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
  }];
  name: "DataSetNotFoundForRail";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "DataSetNotRegistered";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "DataSetPaymentAlreadyTerminated";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "pdpEndEpoch";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "currentBlock";
     type: "uint256";
  }];
  name: "DataSetPaymentBeyondEndEpoch";
  type: "error";
}, {
  inputs: readonly [];
  name: "DivisionByZero";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "string";
     name: "key";
     type: "string";
  }];
  name: "DuplicateMetadataKey";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "implementation";
     type: "address";
  }];
  name: "ERC1967InvalidImplementation";
  type: "error";
}, {
  inputs: readonly [];
  name: "ERC1967NonPayable";
  type: "error";
}, {
  inputs: readonly [];
  name: "ExtraDataRequired";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "actualSize";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "maxAllowedSize";
     type: "uint256";
  }];
  name: "ExtraDataTooLarge";
  type: "error";
}, {
  inputs: readonly [];
  name: "FailedCall";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "FilBeamServiceNotConfigured";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "payer";
     type: "address";
   }, {
     internalType: "uint256";
     name: "minimumRequired";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "available";
     type: "uint256";
  }];
  name: "InsufficientFundsForMinimumRate";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "payer";
     type: "address";
   }, {
     internalType: "address";
     name: "operator";
     type: "address";
   }, {
     internalType: "uint256";
     name: "lockupAllowance";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "lockupUsage";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "minimumLockupRequired";
     type: "uint256";
  }];
  name: "InsufficientLockupAllowance";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "payer";
     type: "address";
   }, {
     internalType: "address";
     name: "operator";
     type: "address";
   }, {
     internalType: "uint256";
     name: "maxLockupPeriod";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "requiredLockupPeriod";
     type: "uint256";
  }];
  name: "InsufficientMaxLockupPeriod";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "payer";
     type: "address";
   }, {
     internalType: "address";
     name: "operator";
     type: "address";
   }, {
     internalType: "uint256";
     name: "rateAllowance";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "rateUsage";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "minimumRateRequired";
     type: "uint256";
  }];
  name: "InsufficientRateAllowance";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "minExpected";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "actual";
     type: "uint256";
  }];
  name: "InvalidChallengeCount";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "minAllowed";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "maxAllowed";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "actual";
     type: "uint256";
  }];
  name: "InvalidChallengeEpoch";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "maxProvingPeriod";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "challengeWindowSize";
     type: "uint256";
  }];
  name: "InvalidChallengeWindowSize";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "InvalidDataSetId";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "fromEpoch";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "toEpoch";
     type: "uint256";
  }];
  name: "InvalidEpochRange";
  type: "error";
}, {
  inputs: readonly [];
  name: "InvalidInitialization";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "length";
     type: "uint256";
  }];
  name: "InvalidServiceDescriptionLength";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "length";
     type: "uint256";
  }];
  name: "InvalidServiceNameLength";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "InvalidTopUpAmount";
  type: "error";
}, {
  inputs: readonly [];
  name: "MaxProvingPeriodZero";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "metadataArrayCount";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "pieceCount";
     type: "uint256";
  }];
  name: "MetadataArrayCountMismatch";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "keysLength";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "valuesLength";
     type: "uint256";
  }];
  name: "MetadataKeyAndValueLengthMismatch";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "index";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "maxAllowed";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "length";
     type: "uint256";
  }];
  name: "MetadataKeyExceedsMaxLength";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "index";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "maxAllowed";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "length";
     type: "uint256";
  }];
  name: "MetadataValueExceedsMaxLength";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "periodDeadline";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "nowBlock";
     type: "uint256";
  }];
  name: "NextProvingPeriodAlreadyCalled";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "NoPDPPaymentRail";
  type: "error";
}, {
  inputs: readonly [];
  name: "NotInitializing";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "expected";
     type: "address";
   }, {
     internalType: "address";
     name: "actual";
     type: "address";
  }];
  name: "OnlyFilBeamControllerAllowed";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "expected";
     type: "address";
   }, {
     internalType: "address";
     name: "actual";
     type: "address";
  }];
  name: "OnlyPDPVerifierAllowed";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "payer";
     type: "address";
   }, {
     internalType: "address";
     name: "operator";
     type: "address";
  }];
  name: "OperatorNotApproved";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "owner";
     type: "address";
  }];
  name: "OwnableInvalidOwner";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "account";
     type: "address";
  }];
  name: "OwnableUnauthorizedAccount";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "pdpEndEpoch";
     type: "uint256";
  }];
  name: "PaymentRailsNotFinalized";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "enum Errors.PriceType";
     name: "priceType";
     type: "uint8";
   }, {
     internalType: "uint256";
     name: "maxAllowed";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "actual";
     type: "uint256";
  }];
  name: "PriceExceedsMaximum";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "ProofAlreadySubmitted";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
  }];
  name: "ProviderAlreadyApproved";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
  }];
  name: "ProviderNotInApprovedList";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "provider";
     type: "address";
  }];
  name: "ProviderNotRegistered";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "ProvingNotStarted";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "deadline";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "nowBlock";
     type: "uint256";
  }];
  name: "ProvingPeriodPassed";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
  }];
  name: "RailNotAssociated";
  type: "error";
}, {
  inputs: readonly [];
  name: "ServiceContractMustTerminateRail";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "maxAllowed";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "keysLength";
     type: "uint256";
  }];
  name: "TooManyMetadataKeys";
  type: "error";
}, {
  inputs: readonly [];
  name: "UUPSUnauthorizedCallContext";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "bytes32";
     name: "slot";
     type: "bytes32";
  }];
  name: "UUPSUnsupportedProxiableUUID";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "enum Errors.AddressField";
     name: "field";
     type: "uint8";
  }];
  name: "ZeroAddress";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "enum Errors.AddressField";
     name: "field";
     type: "uint8";
  }];
  name: "AddressAlreadySet";
  type: "error";
}, {
  inputs: readonly [];
  name: "AtLeastOnePriceMustBeNonZero";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "CDNPaymentAlreadyTerminated";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "CacheMissPaymentAlreadyTerminated";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "address";
     name: "expectedPayer";
     type: "address";
   }, {
     internalType: "address";
     name: "caller";
     type: "address";
  }];
  name: "CallerNotPayer";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "address";
     name: "expectedPayer";
     type: "address";
   }, {
     internalType: "address";
     name: "expectedPayee";
     type: "address";
   }, {
     internalType: "address";
     name: "caller";
     type: "address";
  }];
  name: "CallerNotPayerOrPayee";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "expected";
     type: "address";
   }, {
     internalType: "address";
     name: "actual";
     type: "address";
  }];
  name: "CallerNotPayments";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "windowStart";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "nowBlock";
     type: "uint256";
  }];
  name: "ChallengeWindowTooEarly";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "clientDataSetId";
     type: "uint256";
  }];
  name: "ClientDataSetAlreadyRegistered";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "enum Errors.CommissionType";
     name: "commissionType";
     type: "uint8";
   }, {
     internalType: "uint256";
     name: "max";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "actual";
     type: "uint256";
  }];
  name: "CommissionExceedsMaximum";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
  }];
  name: "DataSetNotFoundForRail";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "DataSetNotRegistered";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "DataSetPaymentAlreadyTerminated";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "pdpEndEpoch";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "currentBlock";
     type: "uint256";
  }];
  name: "DataSetPaymentBeyondEndEpoch";
  type: "error";
}, {
  inputs: readonly [];
  name: "DivisionByZero";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "string";
     name: "key";
     type: "string";
  }];
  name: "DuplicateMetadataKey";
  type: "error";
}, {
  inputs: readonly [];
  name: "ExtraDataRequired";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "actualSize";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "maxAllowedSize";
     type: "uint256";
  }];
  name: "ExtraDataTooLarge";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "FilBeamServiceNotConfigured";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "enum ServiceProviderRegistryStorage.ProductType";
     name: "productType";
     type: "uint8";
  }];
  name: "InsufficientCapabilitiesForProduct";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "payer";
     type: "address";
   }, {
     internalType: "uint256";
     name: "minimumRequired";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "available";
     type: "uint256";
  }];
  name: "InsufficientFundsForMinimumRate";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "payer";
     type: "address";
   }, {
     internalType: "address";
     name: "operator";
     type: "address";
   }, {
     internalType: "uint256";
     name: "lockupAllowance";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "lockupUsage";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "minimumLockupRequired";
     type: "uint256";
  }];
  name: "InsufficientLockupAllowance";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "payer";
     type: "address";
   }, {
     internalType: "address";
     name: "operator";
     type: "address";
   }, {
     internalType: "uint256";
     name: "maxLockupPeriod";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "requiredLockupPeriod";
     type: "uint256";
  }];
  name: "InsufficientMaxLockupPeriod";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "payer";
     type: "address";
   }, {
     internalType: "address";
     name: "operator";
     type: "address";
   }, {
     internalType: "uint256";
     name: "rateAllowance";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "rateUsage";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "minimumRateRequired";
     type: "uint256";
  }];
  name: "InsufficientRateAllowance";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "minExpected";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "actual";
     type: "uint256";
  }];
  name: "InvalidChallengeCount";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "minAllowed";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "maxAllowed";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "actual";
     type: "uint256";
  }];
  name: "InvalidChallengeEpoch";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "maxProvingPeriod";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "challengeWindowSize";
     type: "uint256";
  }];
  name: "InvalidChallengeWindowSize";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "InvalidDataSetId";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "fromEpoch";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "toEpoch";
     type: "uint256";
  }];
  name: "InvalidEpochRange";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "length";
     type: "uint256";
  }];
  name: "InvalidServiceDescriptionLength";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "length";
     type: "uint256";
  }];
  name: "InvalidServiceNameLength";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "expected";
     type: "address";
   }, {
     internalType: "address";
     name: "actual";
     type: "address";
  }];
  name: "InvalidSignature";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "expectedLength";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "actualLength";
     type: "uint256";
  }];
  name: "InvalidSignatureLength";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "InvalidTopUpAmount";
  type: "error";
}, {
  inputs: readonly [];
  name: "MaxProvingPeriodZero";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "metadataArrayCount";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "pieceCount";
     type: "uint256";
  }];
  name: "MetadataArrayCountMismatch";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "keysLength";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "valuesLength";
     type: "uint256";
  }];
  name: "MetadataKeyAndValueLengthMismatch";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "index";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "maxAllowed";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "length";
     type: "uint256";
  }];
  name: "MetadataKeyExceedsMaxLength";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "index";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "maxAllowed";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "length";
     type: "uint256";
  }];
  name: "MetadataValueExceedsMaxLength";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "periodDeadline";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "nowBlock";
     type: "uint256";
  }];
  name: "NextProvingPeriodAlreadyCalled";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "NoPDPPaymentRail";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "address";
     name: "expected";
     type: "address";
   }, {
     internalType: "address";
     name: "actual";
     type: "address";
  }];
  name: "OldServiceProviderMismatch";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "expected";
     type: "address";
   }, {
     internalType: "address";
     name: "actual";
     type: "address";
  }];
  name: "OnlyFilBeamControllerAllowed";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "expected";
     type: "address";
   }, {
     internalType: "address";
     name: "actual";
     type: "address";
  }];
  name: "OnlyPDPVerifierAllowed";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "expected";
     type: "address";
   }, {
     internalType: "address";
     name: "actual";
     type: "address";
  }];
  name: "OnlySelf";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "payer";
     type: "address";
   }, {
     internalType: "address";
     name: "operator";
     type: "address";
  }];
  name: "OperatorNotApproved";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "pdpEndEpoch";
     type: "uint256";
  }];
  name: "PaymentRailsNotFinalized";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "enum Errors.PriceType";
     name: "priceType";
     type: "uint8";
   }, {
     internalType: "uint256";
     name: "maxAllowed";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "actual";
     type: "uint256";
  }];
  name: "PriceExceedsMaximum";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "ProofAlreadySubmitted";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
  }];
  name: "ProviderAlreadyApproved";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
  }];
  name: "ProviderNotInApprovedList";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "provider";
     type: "address";
  }];
  name: "ProviderNotRegistered";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "ProvingNotStarted";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "ProvingPeriodNotInitialized";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "deadline";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "nowBlock";
     type: "uint256";
  }];
  name: "ProvingPeriodPassed";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
  }];
  name: "RailNotAssociated";
  type: "error";
}, {
  inputs: readonly [];
  name: "ServiceContractMustTerminateRail";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "maxAllowed";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "keysLength";
     type: "uint256";
  }];
  name: "TooManyMetadataKeys";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint8";
     name: "v";
     type: "uint8";
  }];
  name: "UnsupportedSignatureV";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "enum Errors.AddressField";
     name: "field";
     type: "uint8";
  }];
  name: "ZeroAddress";
  type: "error";
}] = Abis.storage;
```

Warm Storage ABI - write functions and service provider management
View methods are in the WARM_STORAGE_VIEW contract

### WARM\_STORAGE\_VIEW

```ts
readonly WARM_STORAGE_VIEW: readonly [{
  inputs: readonly [{
     internalType: "contract FilecoinWarmStorageService";
     name: "_service";
     type: "address";
  }];
  stateMutability: "nonpayable";
  type: "constructor";
}, {
  inputs: readonly [];
  name: "challengeWindow";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "payer";
     type: "address";
  }];
  name: "clientDataSets";
  outputs: readonly [{
     internalType: "uint256[]";
     name: "dataSetIds";
     type: "uint256[]";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "payer";
     type: "address";
   }, {
     internalType: "uint256";
     name: "nonce";
     type: "uint256";
  }];
  name: "clientNonces";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "filBeamControllerAddress";
  outputs: readonly [{
     internalType: "address";
     name: "";
     type: "address";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "getAllDataSetMetadata";
  outputs: readonly [{
     internalType: "string[]";
     name: "keys";
     type: "string[]";
   }, {
     internalType: "string[]";
     name: "values";
     type: "string[]";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "pieceId";
     type: "uint256";
  }];
  name: "getAllPieceMetadata";
  outputs: readonly [{
     internalType: "string[]";
     name: "keys";
     type: "string[]";
   }, {
     internalType: "string[]";
     name: "values";
     type: "string[]";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "offset";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "limit";
     type: "uint256";
  }];
  name: "getApprovedProviders";
  outputs: readonly [{
     internalType: "uint256[]";
     name: "providerIds";
     type: "uint256[]";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "getApprovedProvidersLength";
  outputs: readonly [{
     internalType: "uint256";
     name: "count";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "getChallengesPerProof";
  outputs: readonly [{
     internalType: "uint64";
     name: "";
     type: "uint64";
  }];
  stateMutability: "pure";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "client";
     type: "address";
  }];
  name: "getClientDataSets";
  outputs: readonly [{
     components: readonly [{
        internalType: "uint256";
        name: "pdpRailId";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "cacheMissRailId";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "cdnRailId";
        type: "uint256";
      }, {
        internalType: "address";
        name: "payer";
        type: "address";
      }, {
        internalType: "address";
        name: "payee";
        type: "address";
      }, {
        internalType: "address";
        name: "serviceProvider";
        type: "address";
      }, {
        internalType: "uint256";
        name: "commissionBps";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "clientDataSetId";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "pdpEndEpoch";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "providerId";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "dataSetId";
        type: "uint256";
     }];
     internalType: "struct FilecoinWarmStorageService.DataSetInfoView[]";
     name: "infos";
     type: "tuple[]";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "getCurrentPricingRates";
  outputs: readonly [{
     internalType: "uint256";
     name: "storagePrice";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "minimumRate";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "getDataSet";
  outputs: readonly [{
     components: readonly [{
        internalType: "uint256";
        name: "pdpRailId";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "cacheMissRailId";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "cdnRailId";
        type: "uint256";
      }, {
        internalType: "address";
        name: "payer";
        type: "address";
      }, {
        internalType: "address";
        name: "payee";
        type: "address";
      }, {
        internalType: "address";
        name: "serviceProvider";
        type: "address";
      }, {
        internalType: "uint256";
        name: "commissionBps";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "clientDataSetId";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "pdpEndEpoch";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "providerId";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "dataSetId";
        type: "uint256";
     }];
     internalType: "struct FilecoinWarmStorageService.DataSetInfoView";
     name: "info";
     type: "tuple";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "string";
     name: "key";
     type: "string";
  }];
  name: "getDataSetMetadata";
  outputs: readonly [{
     internalType: "bool";
     name: "exists";
     type: "bool";
   }, {
     internalType: "string";
     name: "value";
     type: "string";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "leafCount";
     type: "uint256";
  }];
  name: "getDataSetSizeInBytes";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "pure";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "getDataSetStatus";
  outputs: readonly [{
     internalType: "enum FilecoinWarmStorageService.DataSetStatus";
     name: "status";
     type: "uint8";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "getMaxProvingPeriod";
  outputs: readonly [{
     internalType: "uint64";
     name: "";
     type: "uint64";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "getPDPConfig";
  outputs: readonly [{
     internalType: "uint64";
     name: "maxProvingPeriod";
     type: "uint64";
   }, {
     internalType: "uint256";
     name: "challengeWindowSize";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "challengesPerProof";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "initChallengeWindowStart";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "pieceId";
     type: "uint256";
   }, {
     internalType: "string";
     name: "key";
     type: "string";
  }];
  name: "getPieceMetadata";
  outputs: readonly [{
     internalType: "bool";
     name: "exists";
     type: "bool";
   }, {
     internalType: "string";
     name: "value";
     type: "string";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "providerId";
     type: "uint256";
  }];
  name: "isProviderApproved";
  outputs: readonly [{
     internalType: "bool";
     name: "";
     type: "bool";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "setId";
     type: "uint256";
  }];
  name: "nextPDPChallengeWindowStart";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "nextUpgrade";
  outputs: readonly [{
     internalType: "address";
     name: "nextImplementation";
     type: "address";
   }, {
     internalType: "uint96";
     name: "afterEpoch";
     type: "uint96";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "periodId";
     type: "uint256";
  }];
  name: "provenPeriods";
  outputs: readonly [{
     internalType: "bool";
     name: "";
     type: "bool";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "provenThisPeriod";
  outputs: readonly [{
     internalType: "bool";
     name: "";
     type: "bool";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "provingActivationEpoch";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "setId";
     type: "uint256";
  }];
  name: "provingDeadline";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "railId";
     type: "uint256";
  }];
  name: "railToDataSet";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "service";
  outputs: readonly [{
     internalType: "contract FilecoinWarmStorageService";
     name: "";
     type: "address";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "serviceCommissionBps";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "dataSetId";
     type: "uint256";
  }];
  name: "ProvingPeriodNotInitialized";
  type: "error";
}] = Abis.storageView;
```

Warm Storage View contract ABI - read-only view methods separated from main contract
These methods were moved from the main Warm Storage contract to reduce contract size