Skip to content

Instantly share code, notes, and snippets.

@nginnever
Created June 22, 2021 16:33
Show Gist options
  • Save nginnever/946d51c9da83b22e8a092f836bc21300 to your computer and use it in GitHub Desktop.
Save nginnever/946d51c9da83b22e8a092f836bc21300 to your computer and use it in GitHub Desktop.
ProposalStates.ts
export const startERC20HouseDAOFundingGracePeriod = (
daoAddress: string,
proposalId: number,
provider: Web3Provider,
signer: JsonRpcSigner
): Promise<number> =>
new Promise<number>(async (resolve, reject) => {
try {
let isMined = false
const daoContract = new Contract(daoAddress, HouseTokenDAO.abi, signer)
daoContract.once("GracePeriodStarted", (endDate: BigNumber) => {
const _endDate = Number(endDate.toString())
if (isMined) {
resolve(_endDate)
} else {
endDate = _endDate
}
})
const tx = await daoContract.startFundingProposalGracePeriod(proposalId)
provider.once(tx.hash, () => {
if (endDate !== undefined) {
resolve(endDate)
} else {
isMined = true
}
})
} catch (e) {
reject(e)
}
})
export const startERC20HouseDAORoleChangeGracePeriod = (
daoAddress: string,
proposalId: number,
provider: Web3Provider,
signer: JsonRpcSigner
): Promise<number> =>
new Promise<number>(async (resolve, reject) => {
try {
let isMined = false
const daoContract = new Contract(daoAddress, HouseTokenDAO.abi, signer)
daoContract.once("GracePeriodStarted", (endDate: BigNumber) => {
const _endDate = Number(endDate.toString())
if (isMined) {
resolve(_endDate)
} else {
endDate = _endDate
}
})
const tx = await daoContract.startRoleProposalGracePeriod(proposalId)
provider.once(tx.hash, () => {
if (endDate !== undefined) {
resolve(endDate)
} else {
isMined = true
}
})
} catch (e) {
reject(e)
}
})
export const executeERC20HouseDAORoleChange = (
daoAddress: string,
proposalId: number,
provider: Web3Provider,
signer: JsonRpcSigner
): Promise<number> =>
new Promise<number>(async (resolve, reject) => {
try {
let isMined = false
const daoContract = new Contract(daoAddress, HouseTokenDAO.abi, signer)
const tx = await daoContract.executeChangeRoleProposal(proposalId)
provider.once(tx.hash, () => {
isMined = true
})
} catch (e) {
reject(e)
}
})
export const executeERC20HouseDAOFundingProposal = (
daoAddress: string,
proposalId: number,
provider: Web3Provider,
signer: JsonRpcSigner
): Promise<number> =>
new Promise<number>(async (resolve, reject) => {
try {
let isMined = false
const daoContract = new Contract(daoAddress, HouseTokenDAO.abi, signer)
const tx = await daoContract.executeFundingProposal(proposalId)
provider.once(tx.hash, () => {
isMined = true
})
} catch (e) {
reject(e)
}
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment