# serviceProviderRegistryAbi

```ts
const serviceProviderRegistryAbi: 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: "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: "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";
}];
```

Defined in: [packages/synapse-core/src/abis/generated.ts:4292](https://github.com/FilOzone/synapse-sdk/blob/ebfd64582270197fd5360682eff90a0b8d418d29/packages/synapse-core/src/abis/generated.ts#L4292)

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