diff --git a/packages/governance/src/committee.js b/packages/governance/src/committee.js index 96e68d61ae6..17d496dc928 100644 --- a/packages/governance/src/committee.js +++ b/packages/governance/src/committee.js @@ -5,6 +5,7 @@ import { E } from '@endo/eventual-send'; import { StorageNodeShape } from '@agoric/internal'; import { prepareExo, provideDurableMapStore } from '@agoric/vat-data'; +import { EmptyProposalShape } from '@agoric/zoe/src/typeGuards.js'; import { getOpenQuestions, getPoserInvitation, @@ -79,10 +80,15 @@ export const start = (zcf, privateArgs, baggage) => { // This will produce unique descriptions because // makeCommitteeVoterInvitation() is only called within the following loop, // which is only called once per Electorate. - return zcf.makeInvitation(seat => { - seat.exit(); - return makeVoterKit(index); - }, `Voter${index}`); + return zcf.makeInvitation( + seat => { + seat.exit(); + return makeVoterKit(index); + }, + `Voter${index}`, + undefined, + EmptyProposalShape, + ); }; const { committeeName, committeeSize } = zcf.getTerms(); diff --git a/packages/governance/src/electorateTools.js b/packages/governance/src/electorateTools.js index 5d2f000977d..11ea8355fa5 100644 --- a/packages/governance/src/electorateTools.js +++ b/packages/governance/src/electorateTools.js @@ -1,3 +1,4 @@ +import { EmptyProposalShape } from '@agoric/zoe/src/typeGuards.js'; import { E } from '@endo/eventual-send'; import { deeplyFulfilled, Far } from '@endo/marshal'; @@ -95,7 +96,12 @@ const getPoserInvitation = (zcf, addQuestion) => { seat.exit(); return Far(`questionPoser`, { addQuestion }); }; - return zcf.makeInvitation(questionPoserHandler, `questionPoser`); + return zcf.makeInvitation( + questionPoserHandler, + `questionPoser`, + undefined, + EmptyProposalShape, + ); }; harden(startCounter); diff --git a/packages/governance/src/noActionElectorate.js b/packages/governance/src/noActionElectorate.js index 7f39dfa00a7..b18314f99d8 100644 --- a/packages/governance/src/noActionElectorate.js +++ b/packages/governance/src/noActionElectorate.js @@ -1,6 +1,7 @@ import { makePublishKit } from '@agoric/notifier'; import { makePromiseKit } from '@endo/promise-kit'; import { makeExo } from '@agoric/store'; +import { EmptyProposalShape } from '@agoric/zoe/src/typeGuards.js'; import { ElectoratePublicI, ElectorateCreatorI } from './typeGuards.js'; @@ -40,6 +41,8 @@ const start = zcf => { return zcf.makeInvitation( () => {}, `noActionElectorate doesn't allow posing questions`, + undefined, + EmptyProposalShape, ); }, addQuestion(_instance, _question) { diff --git a/packages/zoe/src/typeGuards.js b/packages/zoe/src/typeGuards.js index a5264eb2e19..32d8ff209fe 100644 --- a/packages/zoe/src/typeGuards.js +++ b/packages/zoe/src/typeGuards.js @@ -90,6 +90,12 @@ export const FullProposalShape = harden({ /** @see {Proposal} type */ export const ProposalShape = M.splitRecord({}, FullProposalShape, {}); +export const EmptyProposalShape = M.splitRecord({ + give: {}, + want: {}, + exit: { onDemand: null }, +}); + export const isOnDemandExitRule = exit => { const [exitKey] = Object.keys(exit); return exitKey === 'onDemand';