diff --git a/packages/governance-sdk/src/governance/accounts.ts b/packages/governance-sdk/src/governance/accounts.ts index 9d97b226..69f88077 100644 --- a/packages/governance-sdk/src/governance/accounts.ts +++ b/packages/governance-sdk/src/governance/accounts.ts @@ -451,7 +451,7 @@ export class GovernanceConfig { minCommunityTokensToCreateProposal: BN; minInstructionHoldUpTime: number; - maxVotingTime: number; + baseVotingTime: number; communityVoteTipping: VoteTipping; minCouncilTokensToCreateProposal: BN; @@ -467,24 +467,24 @@ export class GovernanceConfig { communityVoteThreshold: VoteThreshold; minCommunityTokensToCreateProposal: BN; minInstructionHoldUpTime: number; - maxVotingTime: number; + baseVotingTime: number; communityVoteTipping?: VoteTipping; minCouncilTokensToCreateProposal: BN; // VERSION >= 3 // For versions < 3 must be set to YesVotePercentage(0) - councilVoteThreshold: VoteThreshold; - councilVetoVoteThreshold: VoteThreshold; - communityVetoVoteThreshold: VoteThreshold; - councilVoteTipping: VoteTipping; - votingCoolOffTime: number; - depositExemptProposalCount: number; + councilVoteThreshold?: VoteThreshold; + councilVetoVoteThreshold?: VoteThreshold; + communityVetoVoteThreshold?: VoteThreshold; + councilVoteTipping?: VoteTipping; + votingCoolOffTime?: number; + depositExemptProposalCount?: number; }) { this.communityVoteThreshold = args.communityVoteThreshold; this.minCommunityTokensToCreateProposal = args.minCommunityTokensToCreateProposal; this.minInstructionHoldUpTime = args.minInstructionHoldUpTime; - this.maxVotingTime = args.maxVotingTime; + this.baseVotingTime = args.baseVotingTime; this.communityVoteTipping = args.communityVoteTipping ?? VoteTipping.Strict; this.minCouncilTokensToCreateProposal = args.minCouncilTokensToCreateProposal; @@ -502,8 +502,12 @@ export class GovernanceConfig { this.councilVoteTipping = args.councilVoteTipping ?? this.communityVoteTipping; - this.votingCoolOffTime = args.votingCoolOffTime; - this.depositExemptProposalCount = args.depositExemptProposalCount; + this.votingCoolOffTime = args.votingCoolOffTime ?? 0; + this.depositExemptProposalCount = args.depositExemptProposalCount ?? 0; + } + + get maxVotingTime() { + return this.baseVotingTime + this.votingCoolOffTime; } } @@ -946,12 +950,12 @@ export class Proposal { return this.isPreVotingState() ? governance.config.maxVotingTime : (this.votingAt?.toNumber() ?? 0) + - governance.config.maxVotingTime - + governance.config.maxVotingTime + unixTimestampInSeconds; } hasVoteTimeEnded(governance: Governance) { - return this.getTimeToVoteEnd(governance) <= 0; + return this.getTimeToVoteEnd(governance) < 0; } canCancel(governance: Governance) { diff --git a/packages/governance-sdk/src/governance/serialisation.ts b/packages/governance-sdk/src/governance/serialisation.ts index 85bf427f..b345df1a 100644 --- a/packages/governance-sdk/src/governance/serialisation.ts +++ b/packages/governance-sdk/src/governance/serialisation.ts @@ -334,7 +334,7 @@ function createGovernanceStructSchema( ['communityVoteThreshold', 'VoteThreshold'], ['minCommunityTokensToCreateProposal', 'u64'], ['minInstructionHoldUpTime', 'u32'], - ['maxVotingTime', 'u32'], + ['baseVotingTime', 'u32'], ['communityVoteTipping', 'u8'], ['councilVoteThreshold', 'VoteThreshold'], ['councilVetoVoteThreshold', 'VoteThreshold'], @@ -832,7 +832,7 @@ function createGovernanceAccountSchema(accountVersion: number) { ...(accountVersion === ACCOUNT_VERSION_V1 ? [] - : [['maxVotingTime', { kind: 'option', type: 'u32' }]]), + : [['baseVotingTime', { kind: 'option', type: 'u32' }]]), ['voteThreshold', { kind: 'option', type: 'VoteThreshold' }], diff --git a/packages/governance-sdk/tests/chat/api.test.ts b/packages/governance-sdk/tests/chat/api.test.ts index 62a8ffec..3e3af37f 100644 --- a/packages/governance-sdk/tests/chat/api.test.ts +++ b/packages/governance-sdk/tests/chat/api.test.ts @@ -117,7 +117,7 @@ test('postProposalComment', async () => { }), minCommunityTokensToCreateProposal: new BN(1), minInstructionHoldUpTime: 0, - maxVotingTime: getTimestampFromDays(3), + baseVotingTime: getTimestampFromDays(3), voteTipping: VoteTipping.Strict, councilVoteThreshold: new VoteThreshold({ type: VoteThresholdType.Disabled, diff --git a/packages/governance-sdk/tests/governance/api.smoke.test.ts b/packages/governance-sdk/tests/governance/api.smoke.test.ts index e5d7f4af..f5a0ff9a 100644 --- a/packages/governance-sdk/tests/governance/api.smoke.test.ts +++ b/packages/governance-sdk/tests/governance/api.smoke.test.ts @@ -177,7 +177,7 @@ test('setupRealm', async () => { communityVoteThreshold: communityVoteThreshold, minCommunityTokensToCreateProposal: new BN(1), minInstructionHoldUpTime: 0, - maxVotingTime: getTimestampFromDays(3), + baseVotingTime: getTimestampFromDays(3), communityVoteTipping: VoteTipping.Strict, councilVoteTipping: VoteTipping.Strict, minCouncilTokensToCreateProposal: new BN(1), diff --git a/packages/governance-sdk/tests/governance/api.test.ts b/packages/governance-sdk/tests/governance/api.test.ts index f9c4f11e..68630240 100644 --- a/packages/governance-sdk/tests/governance/api.test.ts +++ b/packages/governance-sdk/tests/governance/api.test.ts @@ -131,7 +131,7 @@ test('createRealmWithGovernanceAndProposal', async () => { communityVoteThreshold: communityVoteThreshold, minCommunityTokensToCreateProposal: new BN(1), minInstructionHoldUpTime: 0, - maxVotingTime: getTimestampFromDays(3), + baseVotingTime: getTimestampFromDays(3), communityVoteTipping: VoteTipping.Strict, councilVoteTipping: VoteTipping.Strict, minCouncilTokensToCreateProposal: new BN(1), diff --git a/packages/governance-sdk/tests/governance/api.v2.test.ts b/packages/governance-sdk/tests/governance/api.v2.test.ts index 8e4981bf..bd6e8c6f 100644 --- a/packages/governance-sdk/tests/governance/api.v2.test.ts +++ b/packages/governance-sdk/tests/governance/api.v2.test.ts @@ -24,7 +24,7 @@ test('createGovernanceWithConfig', async () => { }), minCommunityTokensToCreateProposal: new BN(1), minInstructionHoldUpTime: 0, - maxVotingTime: getTimestampFromDays(3), + baseVotingTime: getTimestampFromDays(3), communityVoteTipping: VoteTipping.Strict, councilVoteTipping: VoteTipping.Strict, minCouncilTokensToCreateProposal: new BN(1), diff --git a/packages/governance-sdk/tests/governance/api.v3.test.ts b/packages/governance-sdk/tests/governance/api.v3.test.ts index 86fc80a0..ddd77aa8 100644 --- a/packages/governance-sdk/tests/governance/api.v3.test.ts +++ b/packages/governance-sdk/tests/governance/api.v3.test.ts @@ -77,7 +77,7 @@ test('createGovernanceWithConfig', async () => { }), minCommunityTokensToCreateProposal: new BN(1), minInstructionHoldUpTime: 0, - maxVotingTime: getTimestampFromDays(3), + baseVotingTime: getTimestampFromDays(3), communityVoteTipping: VoteTipping.Strict, councilVoteTipping: VoteTipping.Strict, minCouncilTokensToCreateProposal: new BN(1), diff --git a/packages/governance-sdk/tests/tools/builders.ts b/packages/governance-sdk/tests/tools/builders.ts index 91cec951..4a689718 100644 --- a/packages/governance-sdk/tests/tools/builders.ts +++ b/packages/governance-sdk/tests/tools/builders.ts @@ -334,7 +334,7 @@ export class RealmBuilder { }), minCommunityTokensToCreateProposal: new BN(1), minInstructionHoldUpTime: 0, - maxVotingTime: getTimestampFromDays(3), + baseVotingTime: getTimestampFromDays(3), communityVoteTipping: VoteTipping.Strict, councilVoteTipping: VoteTipping.Strict, minCouncilTokensToCreateProposal: new BN(1),