Skip to content

Commit

Permalink
new storage type for open gov referendum
Browse files Browse the repository at this point in the history
  • Loading branch information
rajdeep7Singh committed Mar 20, 2023
1 parent 7216b9d commit 3566185
Show file tree
Hide file tree
Showing 4 changed files with 679 additions and 0 deletions.
26 changes: 26 additions & 0 deletions src/mappings/referendumV2/events/referendaSubmitted.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,32 @@ export async function getStorageData(ctx: BatchContext<Store, unknown>, index: n
}
}

}else if(storage.isV2201){
const storageData = await storage.asV2201.get(index)
if (!storageData) return undefined
if(storageData.__kind === 'Ongoing') {
let enactmentAt = undefined
let enactmentAfter = undefined;
if(storageData.value.enactment.__kind === 'At') {
enactmentAt = storageData.value.enactment.value
}
else if(storageData.value.enactment.__kind === 'After') {
enactmentAfter = storageData.value.enactment.value
}
return {
index,
trackNumber: storageData.value.track,
origin: storageData.value.origin.value.__kind,
enactmentAt: enactmentAt,
enactmentAfter: enactmentAfter,
submittedAt: storageData.value.submitted,
submissionDeposit: storageData.value.submissionDeposit,
decisionDeposit: storageData.value.decisionDeposit,
deciding: storageData.value.deciding,
tally: storageData.value.tally
}
}

}
else {
throw new UnknownVersionError(storage.constructor.name)
Expand Down
32 changes: 32 additions & 0 deletions src/types/calls.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import * as v49 from './v49'
import * as v900 from './v900'
import * as v1201 from './v1201'
import * as v2100 from './v2100'
import * as v2201 from './v2201'

export class ConvictionVotingDelegateCall {
private readonly _chain: Chain
Expand Down Expand Up @@ -320,6 +321,37 @@ export class ConvictionVotingVoteCall {
assert(this.isV2100)
return this._chain.decodeCall(this.call)
}

/**
* Vote in a poll. If `vote.is_aye()`, the vote is to enact the proposal;
* otherwise it is a vote to keep the status quo.
*
* The dispatch origin of this call must be _Signed_.
*
* - `poll_index`: The index of the poll to vote for.
* - `vote`: The vote configuration.
*
* Weight: `O(R)` where R is the number of polls the voter has voted on.
*/
get isV2201(): boolean {
return this._chain.getCallHash('ConvictionVoting.vote') === 'c659a6e0d84861cd97f11d84780117a5b61201e70e1e5533a740761dc9489558'
}

/**
* Vote in a poll. If `vote.is_aye()`, the vote is to enact the proposal;
* otherwise it is a vote to keep the status quo.
*
* The dispatch origin of this call must be _Signed_.
*
* - `poll_index`: The index of the poll to vote for.
* - `vote`: The vote configuration.
*
* Weight: `O(R)` where R is the number of polls the voter has voted on.
*/
get asV2201(): {pollIndex: number, vote: v2201.Type_203} {
assert(this.isV2201)
return this._chain.decodeCall(this.call)
}
}

export class DemocracyDelegateCall {
Expand Down
72 changes: 72 additions & 0 deletions src/types/storage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import * as v701 from './v701'
import * as v900 from './v900'
import * as v2000 from './v2000'
import * as v2100 from './v2100'
import * as v2201 from './v2201'

export class BalancesAccountStorage extends StorageBase {
protected getPrefix() {
Expand Down Expand Up @@ -118,6 +119,23 @@ export class ConvictionVotingVotingForStorage extends StorageBase {
assert(this.isV2100)
return this as any
}

/**
* All voting for a particular voter in a particular voting class. We store the balance for the
* number of votes that we have recorded.
*/
get isV2201(): boolean {
return this.getTypeHash() === '9723a5b8948dbd837b6b519d58e5bcf4305ffd6e57bcda3af8564bfa065eed44'
}

/**
* All voting for a particular voter in a particular voting class. We store the balance for the
* number of votes that we have recorded.
*/
get asV2201(): ConvictionVotingVotingForStorageV2201 {
assert(this.isV2201)
return this as any
}
}

/**
Expand All @@ -142,6 +160,28 @@ export interface ConvictionVotingVotingForStorageV2100 {
getPairsPaged(pageSize: number, key1: Uint8Array, key2: number): AsyncIterable<[k: [Uint8Array, number], v: v2100.Type_468][]>
}

/**
* All voting for a particular voter in a particular voting class. We store the balance for the
* number of votes that we have recorded.
*/
export interface ConvictionVotingVotingForStorageV2201 {
get(key1: Uint8Array, key2: number): Promise<v2201.Type_467>
getAll(): Promise<v2201.Type_467[]>
getMany(keys: [Uint8Array, number][]): Promise<v2201.Type_467[]>
getKeys(): Promise<[Uint8Array, number][]>
getKeys(key1: Uint8Array): Promise<[Uint8Array, number][]>
getKeys(key1: Uint8Array, key2: number): Promise<[Uint8Array, number][]>
getKeysPaged(pageSize: number): AsyncIterable<[Uint8Array, number][]>
getKeysPaged(pageSize: number, key1: Uint8Array): AsyncIterable<[Uint8Array, number][]>
getKeysPaged(pageSize: number, key1: Uint8Array, key2: number): AsyncIterable<[Uint8Array, number][]>
getPairs(): Promise<[k: [Uint8Array, number], v: v2201.Type_467][]>
getPairs(key1: Uint8Array): Promise<[k: [Uint8Array, number], v: v2201.Type_467][]>
getPairs(key1: Uint8Array, key2: number): Promise<[k: [Uint8Array, number], v: v2201.Type_467][]>
getPairsPaged(pageSize: number): AsyncIterable<[k: [Uint8Array, number], v: v2201.Type_467][]>
getPairsPaged(pageSize: number, key1: Uint8Array): AsyncIterable<[k: [Uint8Array, number], v: v2201.Type_467][]>
getPairsPaged(pageSize: number, key1: Uint8Array, key2: number): AsyncIterable<[k: [Uint8Array, number], v: v2201.Type_467][]>
}

export class DemocracyPreimagesStorage extends StorageBase {
protected getPrefix() {
return 'Democracy'
Expand Down Expand Up @@ -946,6 +986,21 @@ export class ReferendaReferendumInfoForStorage extends StorageBase {
assert(this.isV2100)
return this as any
}

/**
* Information concerning any given referendum.
*/
get isV2201(): boolean {
return this.getTypeHash() === '7e87345f58ecbf5f07fbc34d91c3c78a3738a2e854caff1bb792dd7c514d0bea'
}

/**
* Information concerning any given referendum.
*/
get asV2201(): ReferendaReferendumInfoForStorageV2201 {
assert(this.isV2201)
return this as any
}
}

/**
Expand All @@ -965,6 +1020,23 @@ export interface ReferendaReferendumInfoForStorageV2100 {
getPairsPaged(pageSize: number, key: number): AsyncIterable<[k: number, v: v2100.Type_480][]>
}

/**
* Information concerning any given referendum.
*/
export interface ReferendaReferendumInfoForStorageV2201 {
get(key: number): Promise<(v2201.Type_479 | undefined)>
getAll(): Promise<v2201.Type_479[]>
getMany(keys: number[]): Promise<(v2201.Type_479 | undefined)[]>
getKeys(): Promise<number[]>
getKeys(key: number): Promise<number[]>
getKeysPaged(pageSize: number): AsyncIterable<number[]>
getKeysPaged(pageSize: number, key: number): AsyncIterable<number[]>
getPairs(): Promise<[k: number, v: v2201.Type_479][]>
getPairs(key: number): Promise<[k: number, v: v2201.Type_479][]>
getPairsPaged(pageSize: number): AsyncIterable<[k: number, v: v2201.Type_479][]>
getPairsPaged(pageSize: number, key: number): AsyncIterable<[k: number, v: v2201.Type_479][]>
}

export class SystemAccountStorage extends StorageBase {
protected getPrefix() {
return 'System'
Expand Down

0 comments on commit 3566185

Please sign in to comment.