/* * VotingReputation Client Version 1 Addons autogenerated by * @colony/colony-js version 4.0.0-beta.0 from colonyNetwork tag 'clwss' * * Feel free to modify as needed! */ /* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any */ import { ContractTransaction } from 'ethers'; import { BigNumberish, BigNumber, Arrayish, bigNumberify } from 'ethers/utils'; import { MaxUint256 } from 'ethers/constants'; import { ExtendedIColony, getPermissionProofs, getChildIndex, } from '../../../Colony/extensions/commonExtensions'; import { TransactionOverrides } from '../../../../contracts/6'; import { ColonyRole } from '../../../../constants'; import { VotingReputationClient } from './VotingReputationClient'; /* * Extra client methods */ export const getVotingReputationClientAddons = ( votingReputationClient: VotingReputationClient, colonyClient: ExtendedIColony, ): Record => ({ createDomainMotionWithProofs: async ( _domainId: BigNumberish, // Domain in which the voting will take place in _action: Arrayish, _key: Arrayish, _value: Arrayish, _branchMask: BigNumberish, _siblings: Arrayish[], overrides?: TransactionOverrides, ): Promise => { let childSkillIdex = MaxUint256; const votingDomain = bigNumberify(_domainId); const decodedDomain = bigNumberify(`0x${_action.toString().slice(10, 74)}`); // Domain in which we have permissions if (!decodedDomain.eq(votingDomain)) { const domainSkillIdIndex = await getChildIndex( colonyClient, decodedDomain, votingDomain, ); if (!domainSkillIdIndex.eq(bigNumberify(-1))) { childSkillIdex = bigNumberify(domainSkillIdIndex); } else { throw new Error('Child skill index could not be found'); } } return votingReputationClient.createDomainMotion( votingDomain, childSkillIdex, _action, _key, _value, _branchMask, _siblings, overrides, ); }, stakeMotionWithProofs: async ( _motionId: BigNumberish, _vote: BigNumberish, _amount: BigNumberish, _key: Arrayish, _value: Arrayish, _branchMask: BigNumberish, _siblings: Arrayish[], overrides?: TransactionOverrides, ): Promise => { const { domainId } = await votingReputationClient.getMotion(_motionId); const [permissionDomainId, childSkillIndex] = await getPermissionProofs( colonyClient, domainId, ColonyRole.Arbitration, votingReputationClient.address, ); return votingReputationClient.stakeMotion( _motionId, permissionDomainId, childSkillIndex, _vote, _amount, _key, _value, _branchMask, _siblings, overrides, ); }, escalateMotionWithProofs: async ( _motionId: BigNumberish, _newDomainId: BigNumberish, // parent, or ancestor, domain id _key: Arrayish, _value: Arrayish, _branchMask: BigNumberish, _siblings: Arrayish[], overrides?: TransactionOverrides, ): Promise => { const { domainId } = await votingReputationClient.getMotion(_motionId); const motionDomainChildSkillIdIndex = await getChildIndex( colonyClient, bigNumberify(_newDomainId), domainId, ); if (motionDomainChildSkillIdIndex.toNumber() === -1) { throw new Error('Child skill index could not be found'); } return votingReputationClient.escalateMotion( _motionId, _newDomainId, motionDomainChildSkillIdIndex, _key, _value, _branchMask, _siblings, overrides, ); }, claimRewardWithProofs: async ( _motionId: BigNumberish, _staker: string, _vote: BigNumberish, overrides?: TransactionOverrides, ): Promise => { const { domainId } = await votingReputationClient.getMotion(_motionId); const [permissionDomainId, childSkillIndex] = await getPermissionProofs( colonyClient, domainId, ColonyRole.Arbitration, votingReputationClient.address, ); return votingReputationClient.claimReward( _motionId, permissionDomainId, childSkillIndex, _staker, _vote, overrides, ); }, }); /* * Extra client methods estimates * * These are needed! Don't skip them! */ export const getVotingReputationClientEstimateAddons = ( votingReputationClient: VotingReputationClient, colonyClient: ExtendedIColony, ): Record => ({ createDomainMotionWithProofs: async ( _domainId: BigNumberish, // Domain in which the voting will take place in _action: Arrayish, _key: Arrayish, _value: Arrayish, _branchMask: BigNumberish, _siblings: Arrayish[], ): Promise => { let childSkillIdex = MaxUint256; const votingDomain = bigNumberify(_domainId); const decodedDomain = bigNumberify(`0x${_action.toString().slice(10, 74)}`); // Domain in which we have permissions if (!decodedDomain.eq(votingDomain)) { const domainSkillIdIndex = await getChildIndex( colonyClient, decodedDomain, votingDomain, ); if (!domainSkillIdIndex.eq(bigNumberify(-1))) { childSkillIdex = bigNumberify(domainSkillIdIndex); } else { throw new Error('Child skill index could not be found'); } } return votingReputationClient.estimate.createDomainMotion( votingDomain, childSkillIdex, _action, _key, _value, _branchMask, _siblings, ); }, stakeMotionWithProofs: async ( _motionId: BigNumberish, _vote: BigNumberish, _amount: BigNumberish, _key: Arrayish, _value: Arrayish, _branchMask: BigNumberish, _siblings: Arrayish[], ): Promise => { const { domainId } = await votingReputationClient.getMotion(_motionId); const [permissionDomainId, childSkillIndex] = await getPermissionProofs( colonyClient, domainId, ColonyRole.Arbitration, votingReputationClient.address, ); return votingReputationClient.estimate.stakeMotion( _motionId, permissionDomainId, childSkillIndex, _vote, _amount, _key, _value, _branchMask, _siblings, ); }, escalateMotionWithProofs: async ( _motionId: BigNumberish, _newDomainId: BigNumberish, // parent, or ancestor, domain id _key: Arrayish, _value: Arrayish, _branchMask: BigNumberish, _siblings: Arrayish[], ): Promise => { const { domainId } = await votingReputationClient.getMotion(_motionId); const motionDomainChildSkillIdIndex = await getChildIndex( colonyClient, bigNumberify(_newDomainId), domainId, ); if (motionDomainChildSkillIdIndex.toNumber() === -1) { throw new Error('Child skill index could not be found'); } return votingReputationClient.estimate.escalateMotion( _motionId, _newDomainId, motionDomainChildSkillIdIndex, _key, _value, _branchMask, _siblings, ); }, claimRewardWithProofs: async ( _motionId: BigNumberish, _staker: string, _vote: BigNumberish, ): Promise => { const { domainId } = await votingReputationClient.getMotion(_motionId); const [permissionDomainId, childSkillIndex] = await getPermissionProofs( colonyClient, domainId, ColonyRole.Arbitration, votingReputationClient.address, ); return votingReputationClient.estimate.claimReward( _motionId, permissionDomainId, childSkillIndex, _staker, _vote, ); }, }); /* eslint-enable */