OptionalcustomArbitrary custom data associated with this voting challenge.
The ID of this voting challenge for tracking votes (scoped like challengeTrackerId). Format: collectionId-approverAddress-approvalLevel-approvalId-challengeId
The quorum threshold as a percentage (0-100) of total possible weight that must vote "yes". Example: 50 means 50% of total voter weight must vote yes for approval.
OptionaluriThe URI associated with this voting challenge.
List of voters with their weights. Each voter can cast a weighted vote.
Deep copies the object and returns a new instance.
Converts the object to a different NumberType equivalent.
Optionaloptions: ConvertOptionsCompares this object's fields to another object's fields for equality. Equality is determined by comparing the JSON representations of the objects.
If normalizeNumberTypes is true, then all number types will be compared as strings (i.e. "1n" === "1" === 1). Else, they will be compared as their native types (i.e. 1n !== 1 !== "1").
OptionalnormalizeNumberTypes: booleanInternal helper method to convert the number fields of the object to a different NumberType equivalent.
Checks if the object has number fields.
Converts the object to a JSON object with all primitive types.
Converts the object to a JSON string.
Staticfrom
VotingChallenge defines a rule for approval in the form of a voting/multi-sig challenge. Requires a weighted quorum threshold to be met through votes from specified voters. All challenges must be met with valid solutions for the transfer to be approved.
IMPORTANT: Votes are stored separately and can be updated. The threshold is calculated as a percentage of total possible weight (all voters), not just voted weight. If you update the proposal ID, then the vote tracker will reset and start a new tally. We recommend using a unique proposal ID for each challenge to prevent overlap and unexpected behavior.