@geoprotocol/geo-sdk 0.19.2 → 0.20.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/README.md +98 -45
  2. package/dist/index.d.ts +1 -1
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +1 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/src/abis/dao-space-factory.d.ts +43 -6
  7. package/dist/src/abis/dao-space-factory.d.ts.map +1 -1
  8. package/dist/src/abis/dao-space-factory.js +38 -27
  9. package/dist/src/abis/dao-space-factory.js.map +1 -1
  10. package/dist/src/abis/dao-space-v2.test.d.ts +2 -0
  11. package/dist/src/abis/dao-space-v2.test.d.ts.map +1 -0
  12. package/dist/src/abis/dao-space-v2.test.js +67 -0
  13. package/dist/src/abis/dao-space-v2.test.js.map +1 -0
  14. package/dist/src/abis/dao-space.d.ts +98 -7
  15. package/dist/src/abis/dao-space.d.ts.map +1 -1
  16. package/dist/src/abis/dao-space.js +61 -99
  17. package/dist/src/abis/dao-space.js.map +1 -1
  18. package/dist/src/abis/index.d.ts +2 -2
  19. package/dist/src/abis/index.d.ts.map +1 -1
  20. package/dist/src/abis/index.js +2 -2
  21. package/dist/src/abis/index.js.map +1 -1
  22. package/dist/src/api-surface.e2e.test.d.ts +2 -0
  23. package/dist/src/api-surface.e2e.test.d.ts.map +1 -0
  24. package/dist/src/{e2e-api-surface.test.js → api-surface.e2e.test.js} +86 -100
  25. package/dist/src/api-surface.e2e.test.js.map +1 -0
  26. package/dist/src/client/dao-spaces.d.ts +65 -33
  27. package/dist/src/client/dao-spaces.d.ts.map +1 -1
  28. package/dist/src/client/dao-spaces.js +133 -42
  29. package/dist/src/client/dao-spaces.js.map +1 -1
  30. package/dist/src/client/dao-spaces.test.js +277 -79
  31. package/dist/src/client/dao-spaces.test.js.map +1 -1
  32. package/dist/src/client/personal-spaces.js +2 -2
  33. package/dist/src/client/personal-spaces.js.map +1 -1
  34. package/dist/src/client/spaces.test.js +9 -7
  35. package/dist/src/client/spaces.test.js.map +1 -1
  36. package/dist/src/client.d.ts +14 -14
  37. package/dist/src/client.d.ts.map +1 -1
  38. package/dist/src/client.js +48 -59
  39. package/dist/src/client.js.map +1 -1
  40. package/dist/src/client.test.js +8 -3
  41. package/dist/src/client.test.js.map +1 -1
  42. package/dist/src/contracts-v2/local-geobrowser.e2e.test.d.ts +2 -0
  43. package/dist/src/contracts-v2/local-geobrowser.e2e.test.d.ts.map +1 -0
  44. package/dist/src/contracts-v2/local-geobrowser.e2e.test.js +239 -0
  45. package/dist/src/contracts-v2/local-geobrowser.e2e.test.js.map +1 -0
  46. package/dist/src/dao-space/constants.d.ts +10 -0
  47. package/dist/src/dao-space/constants.d.ts.map +1 -1
  48. package/dist/src/dao-space/constants.js +10 -0
  49. package/dist/src/dao-space/constants.js.map +1 -1
  50. package/dist/src/dao-space/execute-proposal.d.ts +1 -1
  51. package/dist/src/dao-space/execute-proposal.js +2 -2
  52. package/dist/src/dao-space/execute-proposal.js.map +1 -1
  53. package/dist/src/dao-space/index.d.ts +2 -1
  54. package/dist/src/dao-space/index.d.ts.map +1 -1
  55. package/dist/src/dao-space/index.js +1 -0
  56. package/dist/src/dao-space/index.js.map +1 -1
  57. package/dist/src/dao-space/propose-add-editor.d.ts +1 -20
  58. package/dist/src/dao-space/propose-add-editor.d.ts.map +1 -1
  59. package/dist/src/dao-space/propose-add-editor.js +12 -87
  60. package/dist/src/dao-space/propose-add-editor.js.map +1 -1
  61. package/dist/src/dao-space/propose-add-editor.test.js +16 -4
  62. package/dist/src/dao-space/propose-add-editor.test.js.map +1 -1
  63. package/dist/src/dao-space/propose-add-member.d.ts +1 -20
  64. package/dist/src/dao-space/propose-add-member.d.ts.map +1 -1
  65. package/dist/src/dao-space/propose-add-member.js +12 -87
  66. package/dist/src/dao-space/propose-add-member.js.map +1 -1
  67. package/dist/src/dao-space/propose-add-member.test.js +13 -0
  68. package/dist/src/dao-space/propose-add-member.test.js.map +1 -1
  69. package/dist/src/dao-space/propose-edit.test.js +45 -0
  70. package/dist/src/dao-space/propose-edit.test.js.map +1 -1
  71. package/dist/src/dao-space/propose-remove-editor.d.ts +1 -22
  72. package/dist/src/dao-space/propose-remove-editor.d.ts.map +1 -1
  73. package/dist/src/dao-space/propose-remove-editor.js +12 -94
  74. package/dist/src/dao-space/propose-remove-editor.js.map +1 -1
  75. package/dist/src/dao-space/propose-remove-editor.test.js +22 -4
  76. package/dist/src/dao-space/propose-remove-editor.test.js.map +1 -1
  77. package/dist/src/dao-space/propose-remove-member.d.ts +1 -22
  78. package/dist/src/dao-space/propose-remove-member.d.ts.map +1 -1
  79. package/dist/src/dao-space/propose-remove-member.js +12 -94
  80. package/dist/src/dao-space/propose-remove-member.js.map +1 -1
  81. package/dist/src/dao-space/propose-remove-member.test.js +19 -0
  82. package/dist/src/dao-space/propose-remove-member.test.js.map +1 -1
  83. package/dist/src/dao-space/propose-update-voting-settings.d.ts +8 -0
  84. package/dist/src/dao-space/propose-update-voting-settings.d.ts.map +1 -0
  85. package/dist/src/dao-space/propose-update-voting-settings.js +19 -0
  86. package/dist/src/dao-space/propose-update-voting-settings.js.map +1 -0
  87. package/dist/src/dao-space/propose-update-voting-settings.test.d.ts +2 -0
  88. package/dist/src/dao-space/propose-update-voting-settings.test.d.ts.map +1 -0
  89. package/dist/src/dao-space/propose-update-voting-settings.test.js +118 -0
  90. package/dist/src/dao-space/propose-update-voting-settings.test.js.map +1 -0
  91. package/dist/src/dao-space/types.d.ts +72 -11
  92. package/dist/src/dao-space/types.d.ts.map +1 -1
  93. package/dist/src/dao-space/vote-proposal.d.ts +1 -1
  94. package/dist/src/dao-space/vote-proposal.js +2 -2
  95. package/dist/src/dao-space/vote-proposal.js.map +1 -1
  96. package/dist/src/dao-space/vote-proposal.test.js +54 -0
  97. package/dist/src/dao-space/vote-proposal.test.js.map +1 -1
  98. package/dist/src/e2e-test-environment.d.ts +26 -0
  99. package/dist/src/e2e-test-environment.d.ts.map +1 -0
  100. package/dist/src/e2e-test-environment.js +150 -0
  101. package/dist/src/e2e-test-environment.js.map +1 -0
  102. package/dist/src/encodings/get-create-dao-space-calldata.d.ts +31 -8
  103. package/dist/src/encodings/get-create-dao-space-calldata.d.ts.map +1 -1
  104. package/dist/src/encodings/get-create-dao-space-calldata.js +66 -17
  105. package/dist/src/encodings/get-create-dao-space-calldata.js.map +1 -1
  106. package/dist/src/encodings/get-create-dao-space-calldata.test.js +117 -34
  107. package/dist/src/encodings/get-create-dao-space-calldata.test.js.map +1 -1
  108. package/dist/src/full-flow-test.test.js +5 -2
  109. package/dist/src/full-flow-test.test.js.map +1 -1
  110. package/dist/src/legacy-api-surface.e2e.test.d.ts +2 -0
  111. package/dist/src/legacy-api-surface.e2e.test.d.ts.map +1 -0
  112. package/dist/src/{e2e-legacy-api-surface.test.js → legacy-api-surface.e2e.test.js} +90 -70
  113. package/dist/src/legacy-api-surface.e2e.test.js.map +1 -0
  114. package/dist/src/personal-space/constants.d.ts +1 -1
  115. package/dist/src/personal-space/constants.d.ts.map +1 -1
  116. package/dist/src/personal-space/constants.js +1 -1
  117. package/dist/src/personal-space/constants.js.map +1 -1
  118. package/dist/src/personal-space/create-space.d.ts +2 -2
  119. package/dist/src/personal-space/create-space.d.ts.map +1 -1
  120. package/dist/src/personal-space/create-space.js +4 -3
  121. package/dist/src/personal-space/create-space.js.map +1 -1
  122. package/dist/src/personal-space/types.d.ts +4 -1
  123. package/dist/src/personal-space/types.d.ts.map +1 -1
  124. package/package.json +3 -2
  125. package/dist/src/e2e-api-surface.test.d.ts +0 -2
  126. package/dist/src/e2e-api-surface.test.d.ts.map +0 -1
  127. package/dist/src/e2e-api-surface.test.js.map +0 -1
  128. package/dist/src/e2e-legacy-api-surface.test.d.ts +0 -2
  129. package/dist/src/e2e-legacy-api-surface.test.d.ts.map +0 -1
  130. package/dist/src/e2e-legacy-api-surface.test.js.map +0 -1
@@ -1,10 +1,17 @@
1
- import { decodeAbiParameters, decodeFunctionData, encodeAbiParameters } from 'viem';
2
- import { describe, expect, it, vi } from 'vitest';
1
+ import { createPublicClient, decodeAbiParameters, decodeFunctionData, hexToString } from 'viem';
2
+ import { beforeEach, describe, expect, it, vi } from 'vitest';
3
3
  import { DaoSpaceAbi, SpaceRegistryAbi } from '../abis/index.js';
4
4
  import { createGeoClient } from '../client.js';
5
- import { bytes16ToBytes32LeftAligned, EMPTY_SIGNATURE, EMPTY_TOPIC, MEMBERSHIP_REQUESTED_ACTION, PROPOSAL_CREATED_ACTION, PROPOSAL_EXECUTED_ACTION, PROPOSAL_VOTED_ACTION, VOTE_OPTION_VALUES, } from '../dao-space/constants.js';
5
+ import { bytes16ToBytes32LeftAligned, EDITS_PUBLISHED_ACTION, EMPTY_SIGNATURE, EMPTY_TOPIC, MEMBERSHIP_REQUESTED_ACTION, PROPOSAL_CREATED_ACTION, PROPOSAL_EXECUTED_ACTION, PROPOSAL_UPDATED_ACTION, PROPOSAL_VOTED_ACTION, VOTE_OPTION_VALUES, } from '../dao-space/constants.js';
6
6
  import { defineGeoNetworkConfig } from '../networks.js';
7
7
  import * as Ops from '../ops/index.js';
8
+ vi.mock('viem', async (importOriginal) => {
9
+ const actual = await importOriginal();
10
+ return {
11
+ ...actual,
12
+ createPublicClient: vi.fn(),
13
+ };
14
+ });
8
15
  const CID = 'ipfs://bafkreigwfjixq5cm3s4youhshorkpqh3ykpviyv76c2ei6gaalujtlqz5i';
9
16
  const AUTHOR_ID = '5cade5757ecd41ae83481b22ffc2f94e';
10
17
  const CALLER_SPACE_ID = '0x0eed5491b917cf58b33ac81255fe7ae9';
@@ -13,11 +20,29 @@ const MEMBER_SPACE_ID = '0x22222222222222222222222222222222';
13
20
  const PROPOSAL_ID = '0x11111111111111111111111111111111';
14
21
  const DAO_SPACE_ADDRESS = '0x1234567890123456789012345678901234567890';
15
22
  const SPACE_REGISTRY_ADDRESS = '0x0000000000000000000000000000000000000001';
16
- function customNetwork() {
23
+ const VALID_VOTING_SETTINGS = {
24
+ partialPercentageSupportThreshold: 60,
25
+ universalPercentageSupportThreshold: 90,
26
+ flatSupportThreshold: 2,
27
+ quorum: 1,
28
+ durationInDays: 3,
29
+ disableFastPathAccessForNewMembers: true,
30
+ executionGracePeriodInDays: 14,
31
+ };
32
+ function customNetwork({ rpcUrl } = {}) {
17
33
  return defineGeoNetworkConfig({
18
34
  id: 'LOCAL',
19
35
  name: 'Local Geo',
20
36
  apiOrigin: 'http://localhost:3000',
37
+ ...(rpcUrl
38
+ ? {
39
+ chain: {
40
+ id: 31337,
41
+ name: 'Anvil',
42
+ rpcUrl,
43
+ },
44
+ }
45
+ : {}),
21
46
  contracts: {
22
47
  SPACE_REGISTRY_ADDRESS,
23
48
  },
@@ -42,31 +67,42 @@ function decodeEnter(calldata) {
42
67
  signature,
43
68
  };
44
69
  }
70
+ function decodeProposalPayload(data) {
71
+ const [proposalId, votingMode, actions] = decodeAbiParameters([
72
+ { type: 'bytes16', name: 'proposalId' },
73
+ { type: 'uint8', name: 'votingMode' },
74
+ {
75
+ type: 'tuple[]',
76
+ name: 'actions',
77
+ components: [
78
+ { type: 'address', name: 'to' },
79
+ { type: 'uint256', name: 'value' },
80
+ { type: 'bytes', name: 'data' },
81
+ ],
82
+ },
83
+ ], data);
84
+ return {
85
+ proposalId,
86
+ votingMode,
87
+ actions,
88
+ };
89
+ }
45
90
  describe('geo DAO proposal client', () => {
46
- it('creates proposal calldata for supplied actions without uploading', () => {
91
+ beforeEach(() => {
92
+ vi.mocked(createPublicClient).mockClear();
93
+ });
94
+ it('creates member proposal calldata without uploading', () => {
47
95
  const geo = createGeoClient({ network: customNetwork() });
48
- const action = geo.daoSpaces.proposals.actions.addMember(DAO_SPACE_ADDRESS, MEMBER_SPACE_ID);
49
- const result = geo.daoSpaces.proposals.create({
50
- fromSpaceId: CALLER_SPACE_ID,
51
- daoSpaceId: DAO_SPACE_ID,
96
+ const result = geo.daoSpaces.proposeAddMember({
97
+ authorSpaceId: CALLER_SPACE_ID,
98
+ spaceId: DAO_SPACE_ID,
99
+ daoSpaceAddress: DAO_SPACE_ADDRESS,
100
+ newMemberSpaceId: MEMBER_SPACE_ID,
52
101
  proposalId: PROPOSAL_ID,
53
102
  votingMode: 'SLOW',
54
- actions: [action],
55
103
  });
56
104
  const decoded = decodeEnter(result.calldata);
57
- const [proposalId, votingMode, actions] = decodeAbiParameters([
58
- { type: 'bytes16', name: 'proposalId' },
59
- { type: 'uint8', name: 'votingMode' },
60
- {
61
- type: 'tuple[]',
62
- name: 'actions',
63
- components: [
64
- { type: 'address', name: 'to' },
65
- { type: 'uint256', name: 'value' },
66
- { type: 'bytes', name: 'data' },
67
- ],
68
- },
69
- ], decoded.data);
105
+ const { proposalId, votingMode, actions } = decodeProposalPayload(decoded.data);
70
106
  expect(result.to).toBe(SPACE_REGISTRY_ADDRESS);
71
107
  expect(result.proposalId).toBe(PROPOSAL_ID);
72
108
  expect(decoded.fromSpaceId).toBe(CALLER_SPACE_ID);
@@ -82,31 +118,51 @@ describe('geo DAO proposal client', () => {
82
118
  });
83
119
  it('encodes proposal vote and execute calldata for the configured registry', () => {
84
120
  const geo = createGeoClient({ network: customNetwork() });
85
- const vote = geo.daoSpaces.proposals.vote({
121
+ const vote = geo.daoSpaces.voteProposal({
86
122
  authorSpaceId: CALLER_SPACE_ID,
87
123
  spaceId: DAO_SPACE_ID,
88
124
  proposalId: PROPOSAL_ID,
125
+ versionId: 2,
89
126
  vote: 'NO',
90
127
  });
91
- const execute = geo.daoSpaces.proposals.execute({
128
+ const execute = geo.daoSpaces.executeProposal({
92
129
  authorSpaceId: CALLER_SPACE_ID,
93
130
  spaceId: DAO_SPACE_ID,
94
131
  proposalId: PROPOSAL_ID,
95
132
  });
96
133
  const decodedVote = decodeEnter(vote.calldata);
97
134
  const decodedExecute = decodeEnter(execute.calldata);
98
- const [, voteOption] = decodeAbiParameters([
135
+ const [proposalId, versionId, voteOption] = decodeAbiParameters([
99
136
  { type: 'bytes16', name: 'proposalId' },
137
+ { type: 'uint8', name: 'versionId' },
100
138
  { type: 'uint8', name: 'voteOption' },
101
139
  ], decodedVote.data);
102
140
  expect(vote.to).toBe(SPACE_REGISTRY_ADDRESS);
103
141
  expect(execute.to).toBe(SPACE_REGISTRY_ADDRESS);
104
142
  expect(decodedVote.action).toBe(PROPOSAL_VOTED_ACTION);
105
143
  expect(decodedVote.topic).toBe(bytes16ToBytes32LeftAligned(PROPOSAL_ID));
144
+ expect(proposalId).toBe(PROPOSAL_ID);
145
+ expect(versionId).toBe(2);
106
146
  expect(voteOption).toBe(VOTE_OPTION_VALUES.NO);
107
147
  expect(decodedExecute.action).toBe(PROPOSAL_EXECUTED_ACTION);
108
148
  expect(decodedExecute.topic).toBe(bytes16ToBytes32LeftAligned(PROPOSAL_ID));
109
149
  });
150
+ it('defaults proposal votes to version 1', () => {
151
+ const geo = createGeoClient({ network: customNetwork() });
152
+ const vote = geo.daoSpaces.voteProposal({
153
+ authorSpaceId: CALLER_SPACE_ID,
154
+ spaceId: DAO_SPACE_ID,
155
+ proposalId: PROPOSAL_ID,
156
+ vote: 'YES',
157
+ });
158
+ const decodedVote = decodeEnter(vote.calldata);
159
+ const [, versionId] = decodeAbiParameters([
160
+ { type: 'bytes16', name: 'proposalId' },
161
+ { type: 'uint8', name: 'versionId' },
162
+ { type: 'uint8', name: 'voteOption' },
163
+ ], decodedVote.data);
164
+ expect(versionId).toBe(1);
165
+ });
110
166
  it('publishes an edit and wraps it as a DAO proposal action', async () => {
111
167
  const fetch = mockUploadFetch();
112
168
  const geo = createGeoClient({ network: customNetwork(), fetch });
@@ -121,36 +177,134 @@ describe('geo DAO proposal client', () => {
121
177
  proposalId: PROPOSAL_ID,
122
178
  });
123
179
  const decoded = decodeEnter(result.calldata);
124
- const [, , actions] = decodeAbiParameters([
125
- { type: 'bytes16', name: 'proposalId' },
126
- { type: 'uint8', name: 'votingMode' },
127
- {
128
- type: 'tuple[]',
129
- name: 'actions',
130
- components: [
131
- { type: 'address', name: 'to' },
132
- { type: 'uint256', name: 'value' },
133
- { type: 'bytes', name: 'data' },
134
- ],
135
- },
136
- ], decoded.data);
137
- const publishAction = actions[0];
138
- expect(publishAction).toBeDefined();
139
- if (!publishAction) {
140
- throw new Error('Expected a publish action');
180
+ const { actions } = decodeProposalPayload(decoded.data);
181
+ const editAction = actions[0];
182
+ expect(editAction).toBeDefined();
183
+ if (!editAction) {
184
+ throw new Error('Expected an edit action');
141
185
  }
142
- const publishCall = decodeFunctionData({
186
+ const editCall = decodeFunctionData({
143
187
  abi: DaoSpaceAbi,
144
- data: publishAction.data,
188
+ data: editAction.data,
145
189
  });
190
+ const [editsContentUri, editsMetadata] = decodeAbiParameters([
191
+ { type: 'bytes', name: 'editsContentUri' },
192
+ { type: 'bytes', name: 'editsMetadata' },
193
+ ], editCall.args?.[2]);
146
194
  expect(result.to).toBe(SPACE_REGISTRY_ADDRESS);
147
195
  expect(result.cid).toBe(CID);
148
196
  expect(result.proposalId).toBe(PROPOSAL_ID);
149
- expect(publishAction.to).toBe(DAO_SPACE_ADDRESS);
150
- expect(publishCall.functionName).toBe('publish');
151
- expect(publishCall.args?.[1]).toBe(encodeAbiParameters([{ type: 'string' }], [CID]));
197
+ expect(result.versionId).toBe(1);
198
+ expect(decoded.action).toBe(PROPOSAL_CREATED_ACTION);
199
+ expect(editAction.to).toBe(DAO_SPACE_ADDRESS);
200
+ expect(editCall.functionName).toBe('ping');
201
+ expect(editCall.args?.[0]).toBe(EDITS_PUBLISHED_ACTION);
202
+ expect(editCall.args?.[1]).toBe(EMPTY_TOPIC);
203
+ expect(hexToString(editsContentUri)).toBe(CID);
204
+ expect(editsMetadata).toBe('0x');
152
205
  expect(fetch).toHaveBeenCalledWith('http://localhost:3000/ipfs/upload-edit', expect.objectContaining({ method: 'POST' }));
153
206
  });
207
+ it('publishes an edit as a new version of an existing DAO proposal', async () => {
208
+ const fetch = mockUploadFetch();
209
+ const geo = createGeoClient({ network: customNetwork(), fetch });
210
+ const { ops } = Ops.entities.create({ name: 'Updated Entity' });
211
+ const result = await geo.daoSpaces.proposeEdit({
212
+ name: 'Update Proposal Version',
213
+ ops,
214
+ author: AUTHOR_ID,
215
+ daoSpaceAddress: DAO_SPACE_ADDRESS,
216
+ callerSpaceId: CALLER_SPACE_ID,
217
+ daoSpaceId: DAO_SPACE_ID,
218
+ proposalId: PROPOSAL_ID,
219
+ updateProposal: true,
220
+ versionId: 2,
221
+ });
222
+ const decoded = decodeEnter(result.calldata);
223
+ const { proposalId, actions } = decodeProposalPayload(decoded.data);
224
+ expect(result.proposalId).toBe(PROPOSAL_ID);
225
+ expect(result.versionId).toBe(2);
226
+ expect(decoded.action).toBe(PROPOSAL_UPDATED_ACTION);
227
+ expect(decoded.topic).toBe(bytes16ToBytes32LeftAligned(PROPOSAL_ID));
228
+ expect(proposalId).toBe(PROPOSAL_ID);
229
+ expect(actions[0]?.to).toBe(DAO_SPACE_ADDRESS);
230
+ expect(fetch).toHaveBeenCalledTimes(1);
231
+ });
232
+ it('requires a proposal version before uploading when updating without RPC config', async () => {
233
+ const fetch = mockUploadFetch();
234
+ const geo = createGeoClient({ network: customNetwork(), fetch });
235
+ const { ops } = Ops.entities.create({ name: 'Updated Entity' });
236
+ await expect(geo.daoSpaces.proposeEdit({
237
+ name: 'Update Proposal Version',
238
+ ops,
239
+ author: AUTHOR_ID,
240
+ daoSpaceAddress: DAO_SPACE_ADDRESS,
241
+ callerSpaceId: CALLER_SPACE_ID,
242
+ daoSpaceId: DAO_SPACE_ID,
243
+ proposalId: PROPOSAL_ID,
244
+ updateProposal: true,
245
+ })).rejects.toThrow('versionId is required when updateProposal is true and the network has no RPC URL');
246
+ expect(fetch).not.toHaveBeenCalled();
247
+ });
248
+ it('rejects proposal version IDs for new proposals before uploading', async () => {
249
+ const fetch = mockUploadFetch();
250
+ const geo = createGeoClient({ network: customNetwork(), fetch });
251
+ const { ops } = Ops.entities.create({ name: 'Test Entity' });
252
+ await expect(geo.daoSpaces.proposeEdit({
253
+ name: 'Test Edit',
254
+ ops,
255
+ author: AUTHOR_ID,
256
+ daoSpaceAddress: DAO_SPACE_ADDRESS,
257
+ callerSpaceId: CALLER_SPACE_ID,
258
+ daoSpaceId: DAO_SPACE_ID,
259
+ proposalId: PROPOSAL_ID,
260
+ versionId: 2,
261
+ })).rejects.toThrow('versionId can only be provided when updateProposal is true');
262
+ expect(fetch).not.toHaveBeenCalled();
263
+ });
264
+ it('resolves the next proposal version from RPC before uploading', async () => {
265
+ const readContract = vi.fn().mockResolvedValue(1);
266
+ vi.mocked(createPublicClient).mockReturnValueOnce({ readContract });
267
+ const fetch = mockUploadFetch();
268
+ const geo = createGeoClient({ network: customNetwork({ rpcUrl: 'http://localhost:8545' }), fetch });
269
+ const { ops } = Ops.entities.create({ name: 'Updated Entity' });
270
+ const result = await geo.daoSpaces.proposeEdit({
271
+ name: 'Update Proposal Version',
272
+ ops,
273
+ author: AUTHOR_ID,
274
+ daoSpaceAddress: DAO_SPACE_ADDRESS,
275
+ callerSpaceId: CALLER_SPACE_ID,
276
+ daoSpaceId: DAO_SPACE_ID,
277
+ proposalId: PROPOSAL_ID,
278
+ updateProposal: true,
279
+ });
280
+ expect(result.versionId).toBe(2);
281
+ expect(readContract).toHaveBeenCalledWith(expect.objectContaining({
282
+ address: DAO_SPACE_ADDRESS,
283
+ functionName: 'latestProposalVersion',
284
+ args: [PROPOSAL_ID],
285
+ }));
286
+ expect(fetch).toHaveBeenCalledTimes(1);
287
+ });
288
+ it('rejects mismatched explicit proposal versions before uploading when RPC is configured', async () => {
289
+ const readContract = vi.fn().mockResolvedValue(1);
290
+ vi.mocked(createPublicClient).mockReturnValueOnce({ readContract });
291
+ const fetch = mockUploadFetch();
292
+ const geo = createGeoClient({ network: customNetwork({ rpcUrl: 'http://localhost:8545' }), fetch });
293
+ const { ops } = Ops.entities.create({ name: 'Updated Entity' });
294
+ await expect(geo.daoSpaces.proposeEdit({
295
+ name: 'Update Proposal Version',
296
+ ops,
297
+ author: AUTHOR_ID,
298
+ daoSpaceAddress: DAO_SPACE_ADDRESS,
299
+ callerSpaceId: CALLER_SPACE_ID,
300
+ daoSpaceId: DAO_SPACE_ID,
301
+ proposalId: PROPOSAL_ID,
302
+ updateProposal: true,
303
+ versionId: 3,
304
+ })).rejects.toThrow('versionId 3 does not match next on-chain proposal version 2');
305
+ expect(readContract).toHaveBeenCalled();
306
+ expect(fetch).not.toHaveBeenCalled();
307
+ });
154
308
  it('creates member and editor role proposals from daoSpaces', () => {
155
309
  const geo = createGeoClient({ network: customNetwork() });
156
310
  const addMember = geo.daoSpaces.proposeAddMember({
@@ -168,32 +322,8 @@ describe('geo DAO proposal client', () => {
168
322
  proposalId: PROPOSAL_ID,
169
323
  });
170
324
  const decodedAddMember = decodeEnter(addMember.calldata);
171
- const [, memberVotingMode, memberActions] = decodeAbiParameters([
172
- { type: 'bytes16', name: 'proposalId' },
173
- { type: 'uint8', name: 'votingMode' },
174
- {
175
- type: 'tuple[]',
176
- name: 'actions',
177
- components: [
178
- { type: 'address', name: 'to' },
179
- { type: 'uint256', name: 'value' },
180
- { type: 'bytes', name: 'data' },
181
- ],
182
- },
183
- ], decodedAddMember.data);
184
- const [, editorVotingMode] = decodeAbiParameters([
185
- { type: 'bytes16', name: 'proposalId' },
186
- { type: 'uint8', name: 'votingMode' },
187
- {
188
- type: 'tuple[]',
189
- name: 'actions',
190
- components: [
191
- { type: 'address', name: 'to' },
192
- { type: 'uint256', name: 'value' },
193
- { type: 'bytes', name: 'data' },
194
- ],
195
- },
196
- ], decodeEnter(addEditor.calldata).data);
325
+ const { votingMode: memberVotingMode, actions: memberActions } = decodeProposalPayload(decodedAddMember.data);
326
+ const { votingMode: editorVotingMode } = decodeProposalPayload(decodeEnter(addEditor.calldata).data);
197
327
  const addMemberAction = memberActions[0];
198
328
  expect(addMemberAction).toBeDefined();
199
329
  if (!addMemberAction) {
@@ -210,6 +340,74 @@ describe('geo DAO proposal client', () => {
210
340
  expect(memberVotingMode).toBe(0);
211
341
  expect(editorVotingMode).toBe(0);
212
342
  });
343
+ it('creates update-voting-settings proposals from daoSpaces', () => {
344
+ const geo = createGeoClient({ network: customNetwork() });
345
+ const result = geo.daoSpaces.proposeUpdateVotingSettings({
346
+ authorSpaceId: CALLER_SPACE_ID,
347
+ spaceId: DAO_SPACE_ID,
348
+ daoSpaceAddress: DAO_SPACE_ADDRESS,
349
+ proposalId: PROPOSAL_ID,
350
+ votingSettings: VALID_VOTING_SETTINGS,
351
+ });
352
+ const decoded = decodeEnter(result.calldata);
353
+ const { votingMode, actions } = decodeProposalPayload(decoded.data);
354
+ const action = actions[0];
355
+ expect(action).toBeDefined();
356
+ if (!action) {
357
+ throw new Error('Expected updateVotingSettings action');
358
+ }
359
+ const updateSettingsCall = decodeFunctionData({
360
+ abi: DaoSpaceAbi,
361
+ data: action.data,
362
+ });
363
+ expect(result.to).toBe(SPACE_REGISTRY_ADDRESS);
364
+ expect(decoded.action).toBe(PROPOSAL_CREATED_ACTION);
365
+ expect(votingMode).toBe(0);
366
+ expect(action.to).toBe(DAO_SPACE_ADDRESS);
367
+ expect(updateSettingsCall.functionName).toBe('updateVotingSettings');
368
+ expect(updateSettingsCall.args?.[0]).toEqual({
369
+ partialPercentageSupportThreshold: 6000000n,
370
+ universalPercentageSupportThreshold: 9000000n,
371
+ flatSupportThreshold: 2n,
372
+ quorum: 1n,
373
+ duration: 259200n,
374
+ disableFastPathAccessForNewMembers: true,
375
+ executionGracePeriod: 1209600n,
376
+ });
377
+ });
378
+ it('validates voting settings before building update-voting-settings proposals', () => {
379
+ const geo = createGeoClient({ network: customNetwork() });
380
+ expect(() => geo.daoSpaces.proposeUpdateVotingSettings({
381
+ authorSpaceId: CALLER_SPACE_ID,
382
+ spaceId: DAO_SPACE_ID,
383
+ daoSpaceAddress: DAO_SPACE_ADDRESS,
384
+ proposalId: PROPOSAL_ID,
385
+ votingSettings: {
386
+ ...VALID_VOTING_SETTINGS,
387
+ partialPercentageSupportThreshold: 101,
388
+ },
389
+ })).toThrow('partialPercentageSupportThreshold must be between 0 and 100');
390
+ expect(() => geo.daoSpaces.proposeUpdateVotingSettings({
391
+ authorSpaceId: CALLER_SPACE_ID,
392
+ spaceId: DAO_SPACE_ID,
393
+ daoSpaceAddress: DAO_SPACE_ADDRESS,
394
+ proposalId: PROPOSAL_ID,
395
+ votingSettings: {
396
+ ...VALID_VOTING_SETTINGS,
397
+ flatSupportThreshold: -1,
398
+ },
399
+ })).toThrow('flatSupportThreshold must be a non-negative integer');
400
+ expect(() => geo.daoSpaces.proposeUpdateVotingSettings({
401
+ authorSpaceId: CALLER_SPACE_ID,
402
+ spaceId: DAO_SPACE_ID,
403
+ daoSpaceAddress: DAO_SPACE_ADDRESS,
404
+ proposalId: PROPOSAL_ID,
405
+ votingSettings: {
406
+ ...VALID_VOTING_SETTINGS,
407
+ durationInDays: 0,
408
+ },
409
+ })).toThrow('durationInDays must be at least');
410
+ });
213
411
  it('restricts editor role proposals to SLOW voting', () => {
214
412
  const geo = createGeoClient({ network: customNetwork() });
215
413
  expect(() => geo.daoSpaces.proposeAddEditor({
@@ -231,13 +429,13 @@ describe('geo DAO proposal client', () => {
231
429
  });
232
430
  it('rejects unknown voting modes at runtime', () => {
233
431
  const geo = createGeoClient({ network: customNetwork() });
234
- const action = geo.daoSpaces.proposals.actions.addMember(DAO_SPACE_ADDRESS, MEMBER_SPACE_ID);
235
- expect(() => geo.daoSpaces.proposals.create({
236
- fromSpaceId: CALLER_SPACE_ID,
237
- daoSpaceId: DAO_SPACE_ID,
432
+ expect(() => geo.daoSpaces.proposeAddMember({
433
+ authorSpaceId: CALLER_SPACE_ID,
434
+ spaceId: DAO_SPACE_ID,
435
+ daoSpaceAddress: DAO_SPACE_ADDRESS,
436
+ newMemberSpaceId: MEMBER_SPACE_ID,
238
437
  proposalId: PROPOSAL_ID,
239
438
  votingMode: 'MAYBE',
240
- actions: [action],
241
439
  })).toThrow('votingMode must be "FAST" or "SLOW"');
242
440
  });
243
441
  it('creates membership request calldata from daoSpaces', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"dao-spaces.test.js","sourceRoot":"","sources":["../../../src/client/dao-spaces.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dao-spaces.test.js","sourceRoot":"","sources":["../../../src/client/dao-spaces.test.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ import { createRelation } from '../graph/create-relation.js';
9
9
  import * as IdUtils from '../id-utils.js';
10
10
  import { assertValid } from '../id-utils.js';
11
11
  import { requireGeoContract } from '../networks.js';
12
- import { EMPTY_SIGNATURE, TOPIC_DECLARED } from '../personal-space/constants.js';
12
+ import { EMPTY_SIGNATURE, TOPIC_SET } from '../personal-space/constants.js';
13
13
  function idToBytes16(id, sourceHint) {
14
14
  const normalized = id.startsWith('0x') ? id.slice(2) : id.replaceAll('-', '');
15
15
  assertValid(normalized, sourceHint);
@@ -113,7 +113,7 @@ export function setTopic(context, { spaceId, topicId, authorSpaceId = spaceId })
113
113
  args: [
114
114
  authorSpaceIdBytes,
115
115
  spaceIdBytes,
116
- TOPIC_DECLARED,
116
+ TOPIC_SET,
117
117
  bytes16ToBytes32LeftAligned(topicIdBytes),
118
118
  '0x',
119
119
  EMPTY_SIGNATURE,
@@ -1 +1 @@
1
- {"version":3,"file":"personal-spaces.js","sourceRoot":"","sources":["../../../src/client/personal-spaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"personal-spaces.js","sourceRoot":"","sources":["../../../src/client/personal-spaces.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { decodeAbiParameters, decodeFunctionData, encodeAbiParameters } from 'viem';
1
+ import { decodeFunctionData, encodeAbiParameters, hexToString } from 'viem';
2
2
  import { afterEach, describe, expect, it, vi } from 'vitest';
3
3
  import { EMPTY_SPACE_ID } from '../../contracts.js';
4
4
  import { DaoSpaceFactoryAbi, SpaceRegistryAbi } from '../abis/index.js';
@@ -7,7 +7,7 @@ import { ACCOUNT_TYPE, PERSON_TYPE, SPACE_TYPE, TYPES_PROPERTY } from '../core/i
7
7
  import { getCreatePersonalSpaceCalldata } from '../encodings/get-create-personal-space-calldata.js';
8
8
  import { toGrcId } from '../id-utils.js';
9
9
  import { defineGeoNetworkConfig } from '../networks.js';
10
- import { EMPTY_SIGNATURE, TOPIC_DECLARED } from '../personal-space/constants.js';
10
+ import { EMPTY_SIGNATURE, TOPIC_SET } from '../personal-space/constants.js';
11
11
  const CID = 'ipfs://bafkreigwfjixq5cm3s4youhshorkpqh3ykpviyv76c2ei6gaalujtlqz5i';
12
12
  const AUTHOR_ID = '5cade5757ecd41ae83481b22ffc2f94e';
13
13
  const EDITOR_SPACE_ID = '0x11111111111111111111111111111111';
@@ -103,7 +103,7 @@ describe('geo space clients', () => {
103
103
  expect(result.to).toBe(SPACE_REGISTRY_ADDRESS);
104
104
  expect(decoded.fromSpaceId).toBe(PERSONAL_SPACE_ID);
105
105
  expect(decoded.toSpaceId).toBe(PERSONAL_SPACE_ID);
106
- expect(decoded.action).toBe(TOPIC_DECLARED);
106
+ expect(decoded.action).toBe(TOPIC_SET);
107
107
  expect(decoded.topic).toBe(`0x33333333333333333333333333333333${'0'.repeat(32)}`);
108
108
  expect(decoded.data).toBe('0x');
109
109
  expect(decoded.signature).toBe(EMPTY_SIGNATURE);
@@ -128,10 +128,13 @@ describe('geo space clients', () => {
128
128
  name: 'Test DAO',
129
129
  author: AUTHOR_ID,
130
130
  votingSettings: {
131
- slowPathPercentageThreshold: 50,
132
- fastPathFlatThreshold: 1,
131
+ partialPercentageSupportThreshold: 50,
132
+ universalPercentageSupportThreshold: 90,
133
+ flatSupportThreshold: 1,
133
134
  quorum: 1,
134
135
  durationInDays: 2,
136
+ disableFastPathAccessForNewMembers: true,
137
+ executionGracePeriodInDays: 14,
135
138
  },
136
139
  initialEditorSpaceIds: [EDITOR_SPACE_ID],
137
140
  });
@@ -140,14 +143,13 @@ describe('geo space clients', () => {
140
143
  data: result.calldata,
141
144
  });
142
145
  const [, initialEditors, initialMembers, initialEditsContentUri, , initialTopicId] = decoded.args;
143
- const [decodedCid] = decodeAbiParameters([{ type: 'string' }], initialEditsContentUri);
144
146
  expect(result.to).toBe(DAO_SPACE_FACTORY_ADDRESS);
145
147
  expect(result.cid).toBe(CID);
146
148
  expect(result.spaceEntityId).toHaveLength(32);
147
149
  expect(decoded.functionName).toBe('createDAOSpaceProxy');
148
150
  expect(initialEditors).toEqual([EDITOR_SPACE_ID]);
149
151
  expect(initialMembers).toEqual([]);
150
- expect(decodedCid).toBe(CID);
152
+ expect(hexToString(initialEditsContentUri)).toBe(CID);
151
153
  expect(initialTopicId).toBe(`0x${result.spaceEntityId}`);
152
154
  expect(fetch).toHaveBeenCalledWith('http://localhost:3000/ipfs/upload-edit', expect.objectContaining({ method: 'POST' }));
153
155
  });