ClaimManager
The ClaimManager contract manages the lifecycle of claims from initiation to resolution. It coordinates interactions between users, the Liquidity Manager, and arbitration courts. This contracts ensures a fair and transparent system for cover holders to submit claims and receive compensation when eligible.
Enums info
ClaimStatus
enum ClaimStatus {
Initiated,
Accepted,
Compensated,
Disputed,
RejectedByOverrule,
RejectedByRefusalToArbitrate,
RejectedByCourtDecision,
AcceptedByCourtDecision,
CompensatedAfterDispute
}RulingOptions
enum RulingOptions {
RefusedToArbitrate,
PayClaimant,
RejectClaim
}The neutral "refuse to arbitrate" option IS ALWAYS 0
Structs info
ClaimRead
struct ClaimRead {
uint256 claimId;
address claimant;
string[] evidence;
string[] counterEvidence;
uint256[] relatedClaimIds;
uint64 poolId;
uint256 coverAmount;
bool isCoverActive;
uint64 createdAt;
uint64 rulingTimestamp;
uint64 challengedTimestamp;
ClaimManager.ClaimStatus status;
uint256 coverId;
uint256 disputeId;
string metaEvidenceURI;
uint256 amount;
address prosecutor;
uint256 deposit;
}Claim
struct Claim {
uint64 createdAt;
uint64 rulingTimestamp;
uint64 challengedTimestamp;
ClaimManager.ClaimStatus status;
uint256 coverId;
uint256 disputeId;
uint256 amount;
address claimant;
address prosecutor;
uint256 deposit;
}State variables info
baseMetaEvidenceURI
string baseMetaEvidenceURIcoverToken
contract IAthenaCoverToken coverTokenliquidityManager
contract ILiquidityManager liquidityManagerarbitrator
contract IArbitrator arbitratorevidenceGuardian
address evidenceGuardianoverruleGuardian
address overruleGuardiannextClaimId
uint256 nextClaimIdclaims
mapping(uint256 => struct ClaimManager.Claim) claimsdisputeIdToClaimId
mapping(uint256 => uint256) disputeIdToClaimIdclaimIdToEvidence
mapping(uint256 => string[]) claimIdToEvidenceclaimIdToCounterEvidence
mapping(uint256 => string[]) claimIdToCounterEvidenceclaimCollateral
uint256 claimCollateralklerosExtraData
bytes klerosExtraDatachallengePeriod
uint64 challengePeriodoverrulePeriod
uint64 overrulePeriodevidenceUploadPeriod
uint64 evidenceUploadPeriodnumberOfRulingOptions
uint64 immutable numberOfRulingOptions = 2courtClosed
bool courtClosedModifiers info
onlyArbitrator
modifier onlyArbitrator()Check that the caller is the arbitrator contract
coverExists
modifier coverExists(uint256 coverId_)Check that the cover exists
Parameters:
coverId_
uint256
The cover ID
claimsExists
modifier claimsExists(uint256 claimId_)Check that the claim exists
Parameters:
claimId_
uint256
The claim ID
Read Functions info
arbitrationCost
function arbitrationCost() public view returns (uint256)Returns the cost of arbitration for a Kleros dispute.
Return values:
--
uint256
The arbitration cost
metaEvidenceURI
function metaEvidenceURI(uint256 claimId) public view returns (string memory)Returns the URI of the meta-evidence for a claim
Parameters:
claimId
uint256
The claim ID
Return values:
--
string
The URI of the meta-evidence
coverIdToClaimIds
function coverIdToClaimIds(
uint256 coverId_
) external view coverExists(coverId_) returns (uint256[] memory)Returns all claim IDs associated with a cover.
Parameters:
coverId_
uint256
The cover ID
Return values:
--
uint256[]
All the claim IDs associated with the cover
claimInfo
function claimInfo(
uint256 claimId_
) external view returns (ClaimManager.ClaimRead memory)Get a claim by its ID.
Parameters:
claimId_
uint256
The claim ID
Return values:
--
struct ClaimManager.ClaimRead
The claim's data
claimInfos
function claimInfos(
uint256[] memory claimIds_
) public view returns (ClaimManager.ClaimRead[] memory result)Returns multiple claims by their IDs.
Parameters:
claimIds_
uint256[]
The claim IDs
Return values:
result
struct ClaimManager.ClaimRead[]
All the claims' data
claimsByCoverId
function claimsByCoverId(
uint256 coverId_
) public view returns (ClaimManager.ClaimRead[] memory)Returns all the claims associated with a cover.
Parameters:
coverId_
uint256
The cover ID
Return values:
--
struct ClaimManager.ClaimRead[]
All the cover's claims
claimsByAccount
function claimsByAccount(
address account_
) external view returns (ClaimManager.ClaimRead[] memory result)Returns all the claims of a user.
Parameters:
account_
address
The user's address
Return values:
result
struct ClaimManager.ClaimRead[]
All the user's claims
getClaimEvidence
function getClaimEvidence(
uint256 claimId_
) external view claimsExists(claimId_) returns (string[] memory)Returns the evidence submitted by claimant for a claim.
Parameters:
claimId_
uint256
The claim ID
Return values:
--
string[]
The evidence CIDs
getClaimCounterEvidence
function getClaimCounterEvidence(
uint256 claimId_
) external view claimsExists(claimId_) returns (string[] memory)Returns the counter-evidence submitted by prosecutor or Athena for a claim.
Parameters:
claimId_
uint256
The claim ID
Return values:
--
string[]
The counter-evidence CIDs
Write Functions info
submitEvidenceForClaim
function submitEvidenceForClaim(
uint256 claimId_,
string[] calldata ipfsEvidenceCids_
) external claimsExists(claimId_)Adds evidence IPFS CIDs for a claim.
Parameters:
claimId_
uint256
The claim ID
ipfsEvidenceCids_
string[]
The IPFS CIDs of the evidence
initiateClaim
function initiateClaim(
uint256 coverId_,
uint256 amountClaimed_
) external payable nonReentrantInitiates a payment claim to Kleros by a cover holder.
Parameters:
coverId_
uint256
The cover ID
amountClaimed_
uint256
The amount claimed by the cover holder
disputeClaim
function disputeClaim(
uint256 claimId_
) external payable claimsExists(claimId_) nonReentrantAllows a user to challenge a pending claim by creating a dispute in Kleros.
Parameters:
claimId_
uint256
The claim ID
withdrawCompensation
function withdrawCompensation(
uint256 claimId_
) external claimsExists(claimId_) nonReentrantAllows the claimant to withdraw the compensation after a dispute has been resolved in their favor or the challenge period has elapsed.
Intentionally public to prevent claimant from indefinitely blocking withdrawals from a pool by not executing the claims ruling.
Parameters:
claimId_
uint256
The claim ID
Events info
ClaimCreated
event ClaimCreated(address indexed claimant, uint256 indexed coverId, uint256 claimId)DisputeResolved
event DisputeResolved(uint256 claimId, uint256 disputeId, uint256 ruling)MetaEvidence
event MetaEvidence(uint256 indexedmetaEvidenceID_, stringevidence_)To be emitted when meta-evidence is submitted.
Parameters:
metaEvidenceID_
uint256
Unique identifier of meta-evidence.
evidence_
string
IPFS path to metaevidence, example: '/ipfs/Qmarwkf7C9RuzDEJNnarT3WZ7kem5bk8DZAzx78acJjMFH/metaevidence.json'
Evidence
event Evidence(IArbitrator indexedarbitrator_, uint256 indexedevidenceGroupID_, address indexedparty_, stringevidence_)To be raised when evidence is submitted. Should point to the resource (evidences are not to be stored on chain due to gas considerations).
Parameters:
arbitrator_
contract IArbitrator
The arbitrator of the contract.
evidenceGroupID_
uint256
Unique identifier of the evidence group the evidence belongs to.
party_
address
The address of the party submiting the evidence. Note that 0x0 refers to evidence not submitted by any party.
evidence_
string
IPFS path to evidence, example: '/ipfs/Qmarwkf7C9RuzDEJNnarT3WZ7kem5bk8DZAzx78acJjMFH/evidence.json'
Dispute
event Dispute(IArbitrator indexedarbitrator_, uint256 indexeddisputeID_, uint256metaEvidenceID_, uint256evidenceGroupID_)To be emitted when a dispute is created to link the correct meta-evidence to the disputeID.
Parameters:
arbitrator_
contract IArbitrator
The arbitrator of the contract.
disputeID_
uint256
ID of the dispute in the Arbitrator contract.
metaEvidenceID_
uint256
Unique identifier of meta-evidence.
evidenceGroupID_
uint256
Unique identifier of the evidence group that is linked to this dispute.
Last updated
Was this helpful?