// SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.2; interface IProductService { function newApplication( address owner, uint256 premiumAmount, uint256 sumInsuredAmount, bytes calldata metaData, bytes calldata applicationData ) external returns(bytes32 processId); function collectPremium(bytes32 processId, uint256 amount) external returns( bool success, uint256 feeAmount, uint256 netPremiumAmount ); function adjustPremiumSumInsured( bytes32 processId, uint256 expectedPremiumAmount, uint256 sumInsuredAmount ) external; function revoke(bytes32 processId) external; function underwrite(bytes32 processId) external returns(bool success); function decline(bytes32 processId) external; function expire(bytes32 processId) external; function close(bytes32 processId) external; function newClaim( bytes32 processId, uint256 claimAmount, bytes calldata data ) external returns(uint256 claimId); function confirmClaim( bytes32 processId, uint256 claimId, uint256 confirmedAmount ) external; function declineClaim(bytes32 processId, uint256 claimId) external; function closeClaim(bytes32 processId, uint256 claimId) external; function newPayout( bytes32 processId, uint256 claimId, uint256 amount, bytes calldata data ) external returns(uint256 payoutId); function processPayout(bytes32 processId, uint256 payoutId) external returns( uint256 feeAmount, uint256 netPayoutAmount ); function request( bytes32 processId, bytes calldata data, string calldata callbackMethodName, address callbackContractAddress, uint256 responsibleOracleId ) external returns(uint256 requestId); function cancelRequest(uint256 requestId) external; }