@geoprotocol/geo-sdk 0.18.3 → 0.19.0
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.
- package/README.md +995 -372
- package/dist/contracts.d.ts +0 -11
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +0 -11
- package/dist/contracts.js.map +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/lite.d.ts +2 -0
- package/dist/lite.d.ts.map +1 -1
- package/dist/lite.js +2 -0
- package/dist/lite.js.map +1 -1
- package/dist/src/abis/dao-space-v2.test.d.ts +2 -0
- package/dist/src/abis/dao-space-v2.test.d.ts.map +1 -0
- package/dist/src/abis/dao-space-v2.test.js +67 -0
- package/dist/src/abis/dao-space-v2.test.js.map +1 -0
- package/dist/src/client/api.d.ts +86 -0
- package/dist/src/client/api.d.ts.map +1 -0
- package/dist/src/client/api.js +169 -0
- package/dist/src/client/api.js.map +1 -0
- package/dist/src/client/comments.d.ts +59 -0
- package/dist/src/client/comments.d.ts.map +1 -0
- package/dist/src/client/comments.js +96 -0
- package/dist/src/client/comments.js.map +1 -0
- package/dist/src/client/context.d.ts +20 -0
- package/dist/src/client/context.d.ts.map +1 -0
- package/dist/src/client/context.js +20 -0
- package/dist/src/client/context.js.map +1 -0
- package/dist/src/client/dao-spaces.d.ts +348 -0
- package/dist/src/client/dao-spaces.d.ts.map +1 -0
- package/dist/src/client/dao-spaces.js +494 -0
- package/dist/src/client/dao-spaces.js.map +1 -0
- package/dist/src/client/dao-spaces.test.d.ts +2 -0
- package/dist/src/client/dao-spaces.test.d.ts.map +1 -0
- package/dist/src/client/dao-spaces.test.js +263 -0
- package/dist/src/client/dao-spaces.test.js.map +1 -0
- package/dist/src/client/edits.d.ts +100 -0
- package/dist/src/client/edits.d.ts.map +1 -0
- package/dist/src/client/edits.js +131 -0
- package/dist/src/client/edits.js.map +1 -0
- package/dist/src/client/edits.test.d.ts +2 -0
- package/dist/src/client/edits.test.d.ts.map +1 -0
- package/dist/src/client/edits.test.js +98 -0
- package/dist/src/client/edits.test.js.map +1 -0
- package/dist/src/client/entities.d.ts +23 -0
- package/dist/src/client/entities.d.ts.map +1 -0
- package/dist/src/client/entities.js +88 -0
- package/dist/src/client/entities.js.map +1 -0
- package/dist/src/client/entity-votes.d.ts +141 -0
- package/dist/src/client/entity-votes.d.ts.map +1 -0
- package/dist/src/client/entity-votes.js +168 -0
- package/dist/src/client/entity-votes.js.map +1 -0
- package/dist/src/client/entity-votes.test.d.ts +2 -0
- package/dist/src/client/entity-votes.test.d.ts.map +1 -0
- package/dist/src/client/entity-votes.test.js +93 -0
- package/dist/src/client/entity-votes.test.js.map +1 -0
- package/dist/src/client/graph-workflows.test.d.ts +2 -0
- package/dist/src/client/graph-workflows.test.d.ts.map +1 -0
- package/dist/src/client/graph-workflows.test.js +83 -0
- package/dist/src/client/graph-workflows.test.js.map +1 -0
- package/dist/src/client/images-storage.test.d.ts +2 -0
- package/dist/src/client/images-storage.test.d.ts.map +1 -0
- package/dist/src/client/images-storage.test.js +52 -0
- package/dist/src/client/images-storage.test.js.map +1 -0
- package/dist/src/client/images.d.ts +35 -0
- package/dist/src/client/images.d.ts.map +1 -0
- package/dist/src/client/images.js +90 -0
- package/dist/src/client/images.js.map +1 -0
- package/dist/src/client/personal-spaces.d.ts +155 -0
- package/dist/src/client/personal-spaces.d.ts.map +1 -0
- package/dist/src/client/personal-spaces.js +198 -0
- package/dist/src/client/personal-spaces.js.map +1 -0
- package/dist/src/client/proposals.d.ts +185 -0
- package/dist/src/client/proposals.d.ts.map +1 -0
- package/dist/src/client/proposals.js +294 -0
- package/dist/src/client/proposals.js.map +1 -0
- package/dist/src/client/proposals.test.d.ts +2 -0
- package/dist/src/client/proposals.test.d.ts.map +1 -0
- package/dist/src/client/proposals.test.js +243 -0
- package/dist/src/client/proposals.test.js.map +1 -0
- package/dist/src/client/spaces.test.d.ts +2 -0
- package/dist/src/client/spaces.test.d.ts.map +1 -0
- package/dist/src/client/spaces.test.js +155 -0
- package/dist/src/client/spaces.test.js.map +1 -0
- package/dist/src/client/storage.d.ts +52 -0
- package/dist/src/client/storage.d.ts.map +1 -0
- package/dist/src/client/storage.js +53 -0
- package/dist/src/client/storage.js.map +1 -0
- package/dist/src/client.d.ts +325 -0
- package/dist/src/client.d.ts.map +1 -0
- package/dist/src/client.js +452 -0
- package/dist/src/client.js.map +1 -0
- package/dist/src/client.test.d.ts +2 -0
- package/dist/src/client.test.d.ts.map +1 -0
- package/dist/src/client.test.js +120 -0
- package/dist/src/client.test.js.map +1 -0
- package/dist/src/contracts-v2/abis.d.ts +196 -0
- package/dist/src/contracts-v2/abis.d.ts.map +1 -0
- package/dist/src/contracts-v2/abis.js +110 -0
- package/dist/src/contracts-v2/abis.js.map +1 -0
- package/dist/src/contracts-v2/actions.d.ts +56 -0
- package/dist/src/contracts-v2/actions.d.ts.map +1 -0
- package/dist/src/contracts-v2/actions.js +83 -0
- package/dist/src/contracts-v2/actions.js.map +1 -0
- package/dist/src/contracts-v2/encoding.d.ts +80 -0
- package/dist/src/contracts-v2/encoding.d.ts.map +1 -0
- package/dist/src/contracts-v2/encoding.js +193 -0
- package/dist/src/contracts-v2/encoding.js.map +1 -0
- package/dist/src/contracts-v2/encoding.test.d.ts +2 -0
- package/dist/src/contracts-v2/encoding.test.d.ts.map +1 -0
- package/dist/src/contracts-v2/encoding.test.js +93 -0
- package/dist/src/contracts-v2/encoding.test.js.map +1 -0
- package/dist/src/contracts-v2/local-geobrowser.e2e.test.d.ts +2 -0
- package/dist/src/contracts-v2/local-geobrowser.e2e.test.d.ts.map +1 -0
- package/dist/src/contracts-v2/local-geobrowser.e2e.test.js +239 -0
- package/dist/src/contracts-v2/local-geobrowser.e2e.test.js.map +1 -0
- package/dist/src/contracts-v2/voting-settings.d.ts +48 -0
- package/dist/src/contracts-v2/voting-settings.d.ts.map +1 -0
- package/dist/src/contracts-v2/voting-settings.js +69 -0
- package/dist/src/contracts-v2/voting-settings.js.map +1 -0
- package/dist/src/dao-space/constants.d.ts +6 -3
- package/dist/src/dao-space/constants.d.ts.map +1 -1
- package/dist/src/dao-space/constants.js +6 -5
- package/dist/src/dao-space/constants.js.map +1 -1
- package/dist/src/dao-space/create-space.d.ts +1 -31
- package/dist/src/dao-space/create-space.d.ts.map +1 -1
- package/dist/src/dao-space/create-space.js +5 -70
- package/dist/src/dao-space/create-space.js.map +1 -1
- package/dist/src/dao-space/execute-proposal.d.ts +1 -22
- package/dist/src/dao-space/execute-proposal.d.ts.map +1 -1
- package/dist/src/dao-space/execute-proposal.js +12 -59
- package/dist/src/dao-space/execute-proposal.js.map +1 -1
- package/dist/src/dao-space/propose-add-editor.test.js +1 -1
- package/dist/src/dao-space/propose-add-editor.test.js.map +1 -1
- package/dist/src/dao-space/propose-edit.d.ts +1 -30
- package/dist/src/dao-space/propose-edit.d.ts.map +1 -1
- package/dist/src/dao-space/propose-edit.js +12 -108
- package/dist/src/dao-space/propose-edit.js.map +1 -1
- package/dist/src/dao-space/propose-edit.test.js +8 -1
- package/dist/src/dao-space/propose-edit.test.js.map +1 -1
- package/dist/src/dao-space/propose-remove-editor.d.ts.map +1 -1
- package/dist/src/dao-space/propose-remove-editor.js +5 -5
- package/dist/src/dao-space/propose-remove-editor.js.map +1 -1
- package/dist/src/dao-space/propose-remove-editor.test.js +3 -8
- package/dist/src/dao-space/propose-remove-editor.test.js.map +1 -1
- package/dist/src/dao-space/propose-remove-member.d.ts.map +1 -1
- package/dist/src/dao-space/propose-remove-member.js +5 -5
- package/dist/src/dao-space/propose-remove-member.js.map +1 -1
- package/dist/src/dao-space/propose-request-membership.d.ts.map +1 -1
- package/dist/src/dao-space/propose-request-membership.js +4 -4
- package/dist/src/dao-space/propose-request-membership.js.map +1 -1
- package/dist/src/dao-space/propose-update-voting-settings.d.ts +8 -0
- package/dist/src/dao-space/propose-update-voting-settings.d.ts.map +1 -0
- package/dist/src/dao-space/propose-update-voting-settings.js +19 -0
- package/dist/src/dao-space/propose-update-voting-settings.js.map +1 -0
- package/dist/src/dao-space/propose-update-voting-settings.test.d.ts +2 -0
- package/dist/src/dao-space/propose-update-voting-settings.test.d.ts.map +1 -0
- package/dist/src/dao-space/propose-update-voting-settings.test.js +118 -0
- package/dist/src/dao-space/propose-update-voting-settings.test.js.map +1 -0
- package/dist/src/dao-space/vote-proposal.d.ts +1 -24
- package/dist/src/dao-space/vote-proposal.d.ts.map +1 -1
- package/dist/src/dao-space/vote-proposal.js +12 -64
- package/dist/src/dao-space/vote-proposal.js.map +1 -1
- package/dist/src/e2e/local-geobrowser.d.ts +9 -0
- package/dist/src/e2e/local-geobrowser.d.ts.map +1 -0
- package/dist/src/e2e/local-geobrowser.js +35 -0
- package/dist/src/e2e/local-geobrowser.js.map +1 -0
- package/dist/src/e2e/v2-contracts.test.d.ts +2 -0
- package/dist/src/e2e/v2-contracts.test.d.ts.map +1 -0
- package/dist/src/e2e/v2-contracts.test.js +25 -0
- package/dist/src/e2e/v2-contracts.test.js.map +1 -0
- package/dist/src/e2e-api-surface.test.d.ts +2 -0
- package/dist/src/e2e-api-surface.test.d.ts.map +1 -0
- package/dist/src/e2e-api-surface.test.js +1021 -0
- package/dist/src/e2e-api-surface.test.js.map +1 -0
- package/dist/src/e2e-flows.test.d.ts +2 -0
- package/dist/src/e2e-flows.test.d.ts.map +1 -0
- package/dist/src/e2e-flows.test.js +445 -0
- package/dist/src/e2e-flows.test.js.map +1 -0
- package/dist/src/e2e-legacy-api-surface.test.d.ts +2 -0
- package/dist/src/e2e-legacy-api-surface.test.d.ts.map +1 -0
- package/dist/src/e2e-legacy-api-surface.test.js +840 -0
- package/dist/src/e2e-legacy-api-surface.test.js.map +1 -0
- package/dist/src/encoding.d.ts +3 -0
- package/dist/src/encoding.d.ts.map +1 -1
- package/dist/src/encoding.js +3 -0
- package/dist/src/encoding.js.map +1 -1
- package/dist/src/encodings/get-create-dao-space-calldata.d.ts +3 -89
- package/dist/src/encodings/get-create-dao-space-calldata.d.ts.map +1 -1
- package/dist/src/encodings/get-create-dao-space-calldata.js +5 -95
- package/dist/src/encodings/get-create-dao-space-calldata.js.map +1 -1
- package/dist/src/encodings/get-create-personal-space-calldata.d.ts +2 -0
- package/dist/src/encodings/get-create-personal-space-calldata.d.ts.map +1 -1
- package/dist/src/encodings/get-create-personal-space-calldata.js +2 -0
- package/dist/src/encodings/get-create-personal-space-calldata.js.map +1 -1
- package/dist/src/graph/comment-utils.d.ts +4 -0
- package/dist/src/graph/comment-utils.d.ts.map +1 -1
- package/dist/src/graph/comment-utils.js +4 -0
- package/dist/src/graph/comment-utils.js.map +1 -1
- package/dist/src/graph/constants.d.ts +12 -3
- package/dist/src/graph/constants.d.ts.map +1 -1
- package/dist/src/graph/constants.js +11 -5
- package/dist/src/graph/constants.js.map +1 -1
- package/dist/src/graph/create-comment.d.ts +3 -22
- package/dist/src/graph/create-comment.d.ts.map +1 -1
- package/dist/src/graph/create-comment.js +6 -136
- package/dist/src/graph/create-comment.js.map +1 -1
- package/dist/src/graph/create-comment.test.js +19 -8
- package/dist/src/graph/create-comment.test.js.map +1 -1
- package/dist/src/graph/create-entity.d.ts +2 -0
- package/dist/src/graph/create-entity.d.ts.map +1 -1
- package/dist/src/graph/create-entity.js +2 -0
- package/dist/src/graph/create-entity.js.map +1 -1
- package/dist/src/graph/create-image.d.ts +2 -21
- package/dist/src/graph/create-image.d.ts.map +1 -1
- package/dist/src/graph/create-image.js +7 -69
- package/dist/src/graph/create-image.js.map +1 -1
- package/dist/src/graph/create-property.d.ts +2 -0
- package/dist/src/graph/create-property.d.ts.map +1 -1
- package/dist/src/graph/create-property.js +2 -0
- package/dist/src/graph/create-property.js.map +1 -1
- package/dist/src/graph/create-proposal-review.d.ts +1 -27
- package/dist/src/graph/create-proposal-review.d.ts.map +1 -1
- package/dist/src/graph/create-proposal-review.js +4 -61
- package/dist/src/graph/create-proposal-review.js.map +1 -1
- package/dist/src/graph/create-relation.d.ts +2 -0
- package/dist/src/graph/create-relation.d.ts.map +1 -1
- package/dist/src/graph/create-relation.js +2 -0
- package/dist/src/graph/create-relation.js.map +1 -1
- package/dist/src/graph/create-type.d.ts +2 -0
- package/dist/src/graph/create-type.d.ts.map +1 -1
- package/dist/src/graph/create-type.js +2 -0
- package/dist/src/graph/create-type.js.map +1 -1
- package/dist/src/graph/delete-entity.d.ts +2 -14
- package/dist/src/graph/delete-entity.d.ts.map +1 -1
- package/dist/src/graph/delete-entity.js +5 -78
- package/dist/src/graph/delete-entity.js.map +1 -1
- package/dist/src/graph/delete-entity.test.js +7 -0
- package/dist/src/graph/delete-entity.test.js.map +1 -1
- package/dist/src/graph/delete-relation.d.ts +2 -0
- package/dist/src/graph/delete-relation.d.ts.map +1 -1
- package/dist/src/graph/delete-relation.js +2 -0
- package/dist/src/graph/delete-relation.js.map +1 -1
- package/dist/src/graph/entity-vote.d.ts +3 -3
- package/dist/src/graph/entity-vote.d.ts.map +1 -1
- package/dist/src/graph/entity-vote.js +21 -46
- package/dist/src/graph/entity-vote.js.map +1 -1
- package/dist/src/graph/update-comment.d.ts +3 -0
- package/dist/src/graph/update-comment.d.ts.map +1 -1
- package/dist/src/graph/update-comment.js +3 -0
- package/dist/src/graph/update-comment.js.map +1 -1
- package/dist/src/graph/update-entity.d.ts +2 -0
- package/dist/src/graph/update-entity.d.ts.map +1 -1
- package/dist/src/graph/update-entity.js +2 -0
- package/dist/src/graph/update-entity.js.map +1 -1
- package/dist/src/graph/update-proposal-review.d.ts +2 -27
- package/dist/src/graph/update-proposal-review.d.ts.map +1 -1
- package/dist/src/graph/update-proposal-review.js +4 -50
- package/dist/src/graph/update-proposal-review.js.map +1 -1
- package/dist/src/graph/update-relation.d.ts +2 -0
- package/dist/src/graph/update-relation.d.ts.map +1 -1
- package/dist/src/graph/update-relation.js +2 -0
- package/dist/src/graph/update-relation.js.map +1 -1
- package/dist/src/ipfs-core.d.ts +42 -0
- package/dist/src/ipfs-core.d.ts.map +1 -0
- package/dist/src/ipfs-core.js +165 -0
- package/dist/src/ipfs-core.js.map +1 -0
- package/dist/src/ipfs-core.test.d.ts +2 -0
- package/dist/src/ipfs-core.test.d.ts.map +1 -0
- package/dist/src/ipfs-core.test.js +56 -0
- package/dist/src/ipfs-core.test.js.map +1 -0
- package/dist/src/ipfs.d.ts +7 -52
- package/dist/src/ipfs.d.ts.map +1 -1
- package/dist/src/ipfs.js +27 -170
- package/dist/src/ipfs.js.map +1 -1
- package/dist/src/networks.d.ts +46 -0
- package/dist/src/networks.d.ts.map +1 -0
- package/dist/src/networks.js +90 -0
- package/dist/src/networks.js.map +1 -0
- package/dist/src/ops/comments.d.ts +80 -0
- package/dist/src/ops/comments.d.ts.map +1 -0
- package/dist/src/ops/comments.js +142 -0
- package/dist/src/ops/comments.js.map +1 -0
- package/dist/src/ops/entities.d.ts +50 -0
- package/dist/src/ops/entities.d.ts.map +1 -0
- package/dist/src/ops/entities.js +51 -0
- package/dist/src/ops/entities.js.map +1 -0
- package/dist/src/ops/images.d.ts +37 -0
- package/dist/src/ops/images.d.ts.map +1 -0
- package/dist/src/ops/images.js +69 -0
- package/dist/src/ops/images.js.map +1 -0
- package/dist/src/ops/index.d.ts +7 -0
- package/dist/src/ops/index.d.ts.map +1 -0
- package/dist/src/ops/index.js +7 -0
- package/dist/src/ops/index.js.map +1 -0
- package/dist/src/ops/index.test.d.ts +2 -0
- package/dist/src/ops/index.test.d.ts.map +1 -0
- package/dist/src/ops/index.test.js +115 -0
- package/dist/src/ops/index.test.js.map +1 -0
- package/dist/src/ops/properties.d.ts +20 -0
- package/dist/src/ops/properties.d.ts.map +1 -0
- package/dist/src/ops/properties.js +20 -0
- package/dist/src/ops/properties.js.map +1 -0
- package/dist/src/ops/proposal-reviews.d.ts +43 -0
- package/dist/src/ops/proposal-reviews.d.ts.map +1 -0
- package/dist/src/ops/proposal-reviews.js +103 -0
- package/dist/src/ops/proposal-reviews.js.map +1 -0
- package/dist/src/ops/relations.d.ts +57 -0
- package/dist/src/ops/relations.d.ts.map +1 -0
- package/dist/src/ops/relations.js +59 -0
- package/dist/src/ops/relations.js.map +1 -0
- package/dist/src/ops/types.d.ts +20 -0
- package/dist/src/ops/types.d.ts.map +1 -0
- package/dist/src/ops/types.js +20 -0
- package/dist/src/ops/types.js.map +1 -0
- package/dist/src/personal-space/constants.d.ts +1 -0
- package/dist/src/personal-space/constants.d.ts.map +1 -1
- package/dist/src/personal-space/constants.js +1 -0
- package/dist/src/personal-space/constants.js.map +1 -1
- package/dist/src/personal-space/create-space.d.ts +1 -18
- package/dist/src/personal-space/create-space.d.ts.map +1 -1
- package/dist/src/personal-space/create-space.js +1 -18
- package/dist/src/personal-space/create-space.js.map +1 -1
- package/dist/src/personal-space/has-space.d.ts +9 -2
- package/dist/src/personal-space/has-space.d.ts.map +1 -1
- package/dist/src/personal-space/has-space.js +9 -13
- package/dist/src/personal-space/has-space.js.map +1 -1
- package/dist/src/personal-space/has-space.test.d.ts +2 -0
- package/dist/src/personal-space/has-space.test.d.ts.map +1 -0
- package/dist/src/personal-space/has-space.test.js +30 -0
- package/dist/src/personal-space/has-space.test.js.map +1 -0
- package/dist/src/personal-space/publish-edit.d.ts +1 -22
- package/dist/src/personal-space/publish-edit.d.ts.map +1 -1
- package/dist/src/personal-space/publish-edit.js +10 -64
- package/dist/src/personal-space/publish-edit.js.map +1 -1
- package/dist/src/smart-wallet.d.ts +2 -4
- package/dist/src/smart-wallet.d.ts.map +1 -1
- package/dist/src/smart-wallet.js +6 -9
- package/dist/src/smart-wallet.js.map +1 -1
- package/dist/src/types.d.ts +25 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/package.json +14 -1
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import type { Op } from '@geoprotocol/grc-20';
|
|
2
|
+
import type { VoteOption, VotingMode } from '../dao-space/types.js';
|
|
3
|
+
import { type VotingSettingsInput } from '../encodings/get-create-dao-space-calldata.js';
|
|
4
|
+
import type { Id } from '../id.js';
|
|
5
|
+
import type { GeoClientContext } from './context.js';
|
|
6
|
+
export type ProposalAction = {
|
|
7
|
+
to: `0x${string}`;
|
|
8
|
+
value: bigint;
|
|
9
|
+
data: `0x${string}`;
|
|
10
|
+
};
|
|
11
|
+
export type CreateProposalParams = {
|
|
12
|
+
fromSpaceId: string;
|
|
13
|
+
daoSpaceId: string;
|
|
14
|
+
proposalId?: string;
|
|
15
|
+
votingMode?: VotingMode;
|
|
16
|
+
actions: ProposalAction[];
|
|
17
|
+
};
|
|
18
|
+
export type ProposeEditParams = {
|
|
19
|
+
name: string;
|
|
20
|
+
ops: Op[];
|
|
21
|
+
author: Id | string;
|
|
22
|
+
daoSpaceAddress: `0x${string}`;
|
|
23
|
+
callerSpaceId: string;
|
|
24
|
+
daoSpaceId: string;
|
|
25
|
+
votingMode?: VotingMode;
|
|
26
|
+
proposalId?: string;
|
|
27
|
+
};
|
|
28
|
+
export type VoteProposalParams = {
|
|
29
|
+
authorSpaceId: string;
|
|
30
|
+
spaceId: string;
|
|
31
|
+
proposalId: string;
|
|
32
|
+
vote: VoteOption;
|
|
33
|
+
};
|
|
34
|
+
export type ExecuteProposalParams = {
|
|
35
|
+
authorSpaceId: string;
|
|
36
|
+
spaceId: string;
|
|
37
|
+
proposalId: string;
|
|
38
|
+
};
|
|
39
|
+
declare function encodePublishEditProposalAction(daoSpaceAddress: `0x${string}`, cid: string): ProposalAction;
|
|
40
|
+
declare function encodeUpdateVotingSettingsAction(daoSpaceAddress: `0x${string}`, votingSettings: VotingSettingsInput): ProposalAction;
|
|
41
|
+
/**
|
|
42
|
+
* Builds calldata for creating a DAO proposal from prebuilt proposal actions.
|
|
43
|
+
*
|
|
44
|
+
* This helper is synchronous and does not publish or fetch. It uses the
|
|
45
|
+
* configured `SPACE_REGISTRY_ADDRESS` and encodes a
|
|
46
|
+
* `GOVERNANCE.PROPOSAL_CREATED` `SpaceRegistry.enter(...)` call.
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```ts
|
|
50
|
+
* const actions = [
|
|
51
|
+
* geo.daoSpaces.proposals.actions.addMember(daoSpaceAddress, memberSpaceId),
|
|
52
|
+
* geo.daoSpaces.proposals.actions.updateVotingSettings(daoSpaceAddress, {
|
|
53
|
+
* slowPathPercentageThreshold: 60,
|
|
54
|
+
* fastPathFlatThreshold: 2,
|
|
55
|
+
* quorum: 3,
|
|
56
|
+
* durationInDays: 5,
|
|
57
|
+
* }),
|
|
58
|
+
* ];
|
|
59
|
+
*
|
|
60
|
+
* const tx = geo.daoSpaces.proposals.create({
|
|
61
|
+
* fromSpaceId: authorSpaceId,
|
|
62
|
+
* daoSpaceId,
|
|
63
|
+
* votingMode: 'SLOW',
|
|
64
|
+
* actions,
|
|
65
|
+
* });
|
|
66
|
+
* ```
|
|
67
|
+
*
|
|
68
|
+
* @param context Client context containing the target network configuration.
|
|
69
|
+
* @param params Caller space, DAO space, voting mode, optional proposal ID, and actions.
|
|
70
|
+
* @returns Target registry address, calldata, and proposal ID.
|
|
71
|
+
* @throws When IDs are invalid or the configured network is missing `SPACE_REGISTRY_ADDRESS`.
|
|
72
|
+
*/
|
|
73
|
+
export declare function create(context: GeoClientContext, params: CreateProposalParams): {
|
|
74
|
+
to: `0x${string}`;
|
|
75
|
+
calldata: `0x${string}`;
|
|
76
|
+
proposalId: `0x${string}`;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Publishes an edit and wraps it in a DAO proposal.
|
|
80
|
+
*
|
|
81
|
+
* This helper validates the proposal shape before upload, publishes the edit
|
|
82
|
+
* through the configured API, creates a DAO `publish(...)` action with the
|
|
83
|
+
* resulting CID, and returns calldata for proposal creation.
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```ts
|
|
87
|
+
* import * as Ops from '@geoprotocol/geo-sdk/ops';
|
|
88
|
+
*
|
|
89
|
+
* const { ops } = Ops.entities.update({
|
|
90
|
+
* id: entityId,
|
|
91
|
+
* name: 'Updated name',
|
|
92
|
+
* });
|
|
93
|
+
*
|
|
94
|
+
* const proposal = await geo.daoSpaces.proposeEdit({
|
|
95
|
+
* name: 'Update entity',
|
|
96
|
+
* ops,
|
|
97
|
+
* author: authorSpaceId,
|
|
98
|
+
* daoSpaceAddress,
|
|
99
|
+
* callerSpaceId: authorSpaceId,
|
|
100
|
+
* daoSpaceId,
|
|
101
|
+
* });
|
|
102
|
+
* ```
|
|
103
|
+
*
|
|
104
|
+
* @param context Client context containing network, contract, API, and fetch configuration.
|
|
105
|
+
* @param params Edit publication params plus DAO proposal target details.
|
|
106
|
+
* @returns Edit ID, CID, target registry address, calldata, and proposal ID.
|
|
107
|
+
* @throws When IDs are invalid, required contracts are missing, or edit publishing fails.
|
|
108
|
+
*/
|
|
109
|
+
export declare function proposeEdit(context: GeoClientContext, params: ProposeEditParams): Promise<{
|
|
110
|
+
to: `0x${string}`;
|
|
111
|
+
calldata: `0x${string}`;
|
|
112
|
+
proposalId: `0x${string}`;
|
|
113
|
+
editId: Id;
|
|
114
|
+
cid: `ipfs://${string}`;
|
|
115
|
+
}>;
|
|
116
|
+
/**
|
|
117
|
+
* Builds calldata for voting on a DAO proposal.
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```ts
|
|
121
|
+
* const tx = geo.daoSpaces.proposals.vote({
|
|
122
|
+
* authorSpaceId,
|
|
123
|
+
* spaceId: daoSpaceId,
|
|
124
|
+
* proposalId,
|
|
125
|
+
* vote: 'YES',
|
|
126
|
+
* });
|
|
127
|
+
* ```
|
|
128
|
+
*
|
|
129
|
+
* @param context Client context containing the target network configuration.
|
|
130
|
+
* @param params Author space, DAO space, proposal ID, and vote option.
|
|
131
|
+
* @returns Target registry address and calldata for `GOVERNANCE.PROPOSAL_VOTED`.
|
|
132
|
+
* @throws When IDs are invalid or the configured network is missing `SPACE_REGISTRY_ADDRESS`.
|
|
133
|
+
*/
|
|
134
|
+
export declare function vote(context: GeoClientContext, params: VoteProposalParams): {
|
|
135
|
+
to: `0x${string}`;
|
|
136
|
+
calldata: `0x${string}`;
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* Builds calldata for executing a passed DAO proposal.
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* ```ts
|
|
143
|
+
* const tx = geo.daoSpaces.proposals.execute({
|
|
144
|
+
* authorSpaceId,
|
|
145
|
+
* spaceId: daoSpaceId,
|
|
146
|
+
* proposalId,
|
|
147
|
+
* });
|
|
148
|
+
* ```
|
|
149
|
+
*
|
|
150
|
+
* @param context Client context containing the target network configuration.
|
|
151
|
+
* @param params Author space, DAO space, and proposal ID.
|
|
152
|
+
* @returns Target registry address and calldata for `GOVERNANCE.PROPOSAL_EXECUTED`.
|
|
153
|
+
* @throws When IDs are invalid or the configured network is missing `SPACE_REGISTRY_ADDRESS`.
|
|
154
|
+
*/
|
|
155
|
+
export declare function execute(context: GeoClientContext, params: ExecuteProposalParams): {
|
|
156
|
+
to: `0x${string}`;
|
|
157
|
+
calldata: `0x${string}`;
|
|
158
|
+
};
|
|
159
|
+
/**
|
|
160
|
+
* Helpers for constructing DAO proposal actions.
|
|
161
|
+
*
|
|
162
|
+
* These helpers only encode DAO-space action payloads. Pass their results to
|
|
163
|
+
* `geo.daoSpaces.proposals.create(...)` when building a proposal from explicit actions.
|
|
164
|
+
*
|
|
165
|
+
* @example
|
|
166
|
+
* ```ts
|
|
167
|
+
* const action = geo.daoSpaces.proposals.actions.addEditor(daoSpaceAddress, editorSpaceId);
|
|
168
|
+
* const proposal = geo.daoSpaces.proposals.create({
|
|
169
|
+
* fromSpaceId: authorSpaceId,
|
|
170
|
+
* daoSpaceId,
|
|
171
|
+
* votingMode: 'SLOW',
|
|
172
|
+
* actions: [action],
|
|
173
|
+
* });
|
|
174
|
+
* ```
|
|
175
|
+
*/
|
|
176
|
+
export declare const actions: {
|
|
177
|
+
publishEdit: typeof encodePublishEditProposalAction;
|
|
178
|
+
addEditor: (daoSpaceAddress: `0x${string}`, spaceId: string) => ProposalAction;
|
|
179
|
+
removeEditor: (daoSpaceAddress: `0x${string}`, spaceId: string) => ProposalAction;
|
|
180
|
+
addMember: (daoSpaceAddress: `0x${string}`, spaceId: string) => ProposalAction;
|
|
181
|
+
removeMember: (daoSpaceAddress: `0x${string}`, spaceId: string) => ProposalAction;
|
|
182
|
+
updateVotingSettings: typeof encodeUpdateVotingSettingsAction;
|
|
183
|
+
};
|
|
184
|
+
export {};
|
|
185
|
+
//# sourceMappingURL=proposals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposals.d.ts","sourceRoot":"","sources":["../../../src/client/proposals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAe9C,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,+CAA+C,CAAC;AACvD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAGnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAIrD,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,KAAK,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,EAAE,EAAE,CAAC;IACV,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC;IACpB,eAAe,EAAE,KAAK,MAAM,EAAE,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,UAAU,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAwDF,iBAAS,+BAA+B,CAAC,eAAe,EAAE,KAAK,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,cAAc,CAepG;AAkBD,iBAAS,gCAAgC,CACvC,eAAe,EAAE,KAAK,MAAM,EAAE,EAC9B,cAAc,EAAE,mBAAmB,GAClC,cAAc,CAmBhB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,oBAAoB;;;;EAK7E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB;;;;;;GAgCrF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,kBAAkB;;;EAsBzE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,qBAAqB;;;EAgB/E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,OAAO;;iCAEW,KAAK,MAAM,EAAE,WAAW,MAAM;oCAE3B,KAAK,MAAM,EAAE,WAAW,MAAM;iCAEjC,KAAK,MAAM,EAAE,WAAW,MAAM;oCAE3B,KAAK,MAAM,EAAE,WAAW,MAAM;;CAG/D,CAAC"}
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
2
|
+
import { encodeAbiParameters, encodeFunctionData } from 'viem';
|
|
3
|
+
import { DaoSpaceAbi, SpaceRegistryAbi } from '../abis/index.js';
|
|
4
|
+
import { bytes16ToBytes32LeftAligned, EMPTY_SIGNATURE, EMPTY_TOPIC, ensure0xPrefix, isBytes16Hex, PROPOSAL_CREATED_ACTION, PROPOSAL_EXECUTED_ACTION, PROPOSAL_VOTED_ACTION, VOTE_OPTION_VALUES, } from '../dao-space/constants.js';
|
|
5
|
+
import { toContractVotingSettings, validateIpfsUri, } from '../encodings/get-create-dao-space-calldata.js';
|
|
6
|
+
import { assertValid } from '../id-utils.js';
|
|
7
|
+
import { requireGeoContract } from '../networks.js';
|
|
8
|
+
const VALIDATION_CID = 'ipfs://QmP6aJhM3SgoRSPUccBQK9VMHNqqezixG1Qvjy2xPWvPh5';
|
|
9
|
+
function bytes16Id(value, name) {
|
|
10
|
+
const normalized = ensure0xPrefix(value);
|
|
11
|
+
if (!isBytes16Hex(normalized)) {
|
|
12
|
+
throw new Error(`${name} must be bytes16 hex (32 hex chars). Received: ${value}`);
|
|
13
|
+
}
|
|
14
|
+
return normalized;
|
|
15
|
+
}
|
|
16
|
+
function encodeCreateProposal(params) {
|
|
17
|
+
const fromSpaceId = bytes16Id(params.fromSpaceId, 'fromSpaceId');
|
|
18
|
+
const daoSpaceId = bytes16Id(params.daoSpaceId, 'daoSpaceId');
|
|
19
|
+
const proposalId = params.proposalId
|
|
20
|
+
? bytes16Id(params.proposalId, 'proposalId')
|
|
21
|
+
: `0x${uuidv4().replaceAll('-', '')}`;
|
|
22
|
+
const votingMode = params.votingMode ?? 'FAST';
|
|
23
|
+
const data = encodeAbiParameters([
|
|
24
|
+
{ type: 'bytes16', name: 'proposalId' },
|
|
25
|
+
{ type: 'uint8', name: 'votingMode' },
|
|
26
|
+
{
|
|
27
|
+
type: 'tuple[]',
|
|
28
|
+
name: 'actions',
|
|
29
|
+
components: [
|
|
30
|
+
{ type: 'address', name: 'to' },
|
|
31
|
+
{ type: 'uint256', name: 'value' },
|
|
32
|
+
{ type: 'bytes', name: 'data' },
|
|
33
|
+
],
|
|
34
|
+
},
|
|
35
|
+
], [proposalId, votingMode === 'FAST' ? 1 : 0, params.actions]);
|
|
36
|
+
const calldata = encodeFunctionData({
|
|
37
|
+
abi: SpaceRegistryAbi,
|
|
38
|
+
functionName: 'enter',
|
|
39
|
+
args: [
|
|
40
|
+
fromSpaceId,
|
|
41
|
+
daoSpaceId,
|
|
42
|
+
PROPOSAL_CREATED_ACTION,
|
|
43
|
+
bytes16ToBytes32LeftAligned(proposalId),
|
|
44
|
+
data,
|
|
45
|
+
EMPTY_SIGNATURE,
|
|
46
|
+
],
|
|
47
|
+
});
|
|
48
|
+
return {
|
|
49
|
+
to: params.spaceRegistryAddress,
|
|
50
|
+
calldata,
|
|
51
|
+
proposalId,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function encodePublishEditProposalAction(daoSpaceAddress, cid) {
|
|
55
|
+
const ipfsError = validateIpfsUri(cid);
|
|
56
|
+
if (ipfsError) {
|
|
57
|
+
throw new Error(ipfsError);
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
to: daoSpaceAddress,
|
|
61
|
+
value: 0n,
|
|
62
|
+
data: encodeFunctionData({
|
|
63
|
+
abi: DaoSpaceAbi,
|
|
64
|
+
functionName: 'publish',
|
|
65
|
+
args: [EMPTY_TOPIC, encodeAbiParameters([{ type: 'string' }], [cid]), '0x'],
|
|
66
|
+
}),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
function encodeDaoRoleAction(daoSpaceAddress, functionName, spaceId) {
|
|
70
|
+
return {
|
|
71
|
+
to: daoSpaceAddress,
|
|
72
|
+
value: 0n,
|
|
73
|
+
data: encodeFunctionData({
|
|
74
|
+
abi: DaoSpaceAbi,
|
|
75
|
+
functionName,
|
|
76
|
+
args: [bytes16Id(spaceId, 'spaceId')],
|
|
77
|
+
}),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
function encodeUpdateVotingSettingsAction(daoSpaceAddress, votingSettings) {
|
|
81
|
+
const contractVotingSettings = toContractVotingSettings(votingSettings);
|
|
82
|
+
return {
|
|
83
|
+
to: daoSpaceAddress,
|
|
84
|
+
value: 0n,
|
|
85
|
+
data: encodeFunctionData({
|
|
86
|
+
abi: DaoSpaceAbi,
|
|
87
|
+
functionName: 'updateVotingSettings',
|
|
88
|
+
args: [
|
|
89
|
+
{
|
|
90
|
+
slowPathPercentageThreshold: contractVotingSettings.slowPathPercentageThreshold,
|
|
91
|
+
fastPathFlatThreshold: contractVotingSettings.fastPathFlatThreshold,
|
|
92
|
+
quorum: contractVotingSettings.quorum,
|
|
93
|
+
duration: contractVotingSettings.duration,
|
|
94
|
+
},
|
|
95
|
+
],
|
|
96
|
+
}),
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Builds calldata for creating a DAO proposal from prebuilt proposal actions.
|
|
101
|
+
*
|
|
102
|
+
* This helper is synchronous and does not publish or fetch. It uses the
|
|
103
|
+
* configured `SPACE_REGISTRY_ADDRESS` and encodes a
|
|
104
|
+
* `GOVERNANCE.PROPOSAL_CREATED` `SpaceRegistry.enter(...)` call.
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* ```ts
|
|
108
|
+
* const actions = [
|
|
109
|
+
* geo.daoSpaces.proposals.actions.addMember(daoSpaceAddress, memberSpaceId),
|
|
110
|
+
* geo.daoSpaces.proposals.actions.updateVotingSettings(daoSpaceAddress, {
|
|
111
|
+
* slowPathPercentageThreshold: 60,
|
|
112
|
+
* fastPathFlatThreshold: 2,
|
|
113
|
+
* quorum: 3,
|
|
114
|
+
* durationInDays: 5,
|
|
115
|
+
* }),
|
|
116
|
+
* ];
|
|
117
|
+
*
|
|
118
|
+
* const tx = geo.daoSpaces.proposals.create({
|
|
119
|
+
* fromSpaceId: authorSpaceId,
|
|
120
|
+
* daoSpaceId,
|
|
121
|
+
* votingMode: 'SLOW',
|
|
122
|
+
* actions,
|
|
123
|
+
* });
|
|
124
|
+
* ```
|
|
125
|
+
*
|
|
126
|
+
* @param context Client context containing the target network configuration.
|
|
127
|
+
* @param params Caller space, DAO space, voting mode, optional proposal ID, and actions.
|
|
128
|
+
* @returns Target registry address, calldata, and proposal ID.
|
|
129
|
+
* @throws When IDs are invalid or the configured network is missing `SPACE_REGISTRY_ADDRESS`.
|
|
130
|
+
*/
|
|
131
|
+
export function create(context, params) {
|
|
132
|
+
return encodeCreateProposal({
|
|
133
|
+
...params,
|
|
134
|
+
spaceRegistryAddress: requireGeoContract(context.network, 'SPACE_REGISTRY_ADDRESS'),
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Publishes an edit and wraps it in a DAO proposal.
|
|
139
|
+
*
|
|
140
|
+
* This helper validates the proposal shape before upload, publishes the edit
|
|
141
|
+
* through the configured API, creates a DAO `publish(...)` action with the
|
|
142
|
+
* resulting CID, and returns calldata for proposal creation.
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* ```ts
|
|
146
|
+
* import * as Ops from '@geoprotocol/geo-sdk/ops';
|
|
147
|
+
*
|
|
148
|
+
* const { ops } = Ops.entities.update({
|
|
149
|
+
* id: entityId,
|
|
150
|
+
* name: 'Updated name',
|
|
151
|
+
* });
|
|
152
|
+
*
|
|
153
|
+
* const proposal = await geo.daoSpaces.proposeEdit({
|
|
154
|
+
* name: 'Update entity',
|
|
155
|
+
* ops,
|
|
156
|
+
* author: authorSpaceId,
|
|
157
|
+
* daoSpaceAddress,
|
|
158
|
+
* callerSpaceId: authorSpaceId,
|
|
159
|
+
* daoSpaceId,
|
|
160
|
+
* });
|
|
161
|
+
* ```
|
|
162
|
+
*
|
|
163
|
+
* @param context Client context containing network, contract, API, and fetch configuration.
|
|
164
|
+
* @param params Edit publication params plus DAO proposal target details.
|
|
165
|
+
* @returns Edit ID, CID, target registry address, calldata, and proposal ID.
|
|
166
|
+
* @throws When IDs are invalid, required contracts are missing, or edit publishing fails.
|
|
167
|
+
*/
|
|
168
|
+
export async function proposeEdit(context, params) {
|
|
169
|
+
assertValid(String(params.author), '`author` in `proposeEdit`');
|
|
170
|
+
const spaceRegistryAddress = requireGeoContract(context.network, 'SPACE_REGISTRY_ADDRESS');
|
|
171
|
+
const validated = encodeCreateProposal({
|
|
172
|
+
fromSpaceId: params.callerSpaceId,
|
|
173
|
+
daoSpaceId: params.daoSpaceId,
|
|
174
|
+
proposalId: params.proposalId,
|
|
175
|
+
votingMode: params.votingMode ?? 'FAST',
|
|
176
|
+
actions: [encodePublishEditProposalAction(params.daoSpaceAddress, VALIDATION_CID)],
|
|
177
|
+
spaceRegistryAddress,
|
|
178
|
+
});
|
|
179
|
+
const { publish } = await import('./edits.js');
|
|
180
|
+
const { cid, editId } = await publish(context, {
|
|
181
|
+
name: params.name,
|
|
182
|
+
ops: params.ops,
|
|
183
|
+
author: params.author,
|
|
184
|
+
});
|
|
185
|
+
const result = encodeCreateProposal({
|
|
186
|
+
fromSpaceId: params.callerSpaceId,
|
|
187
|
+
daoSpaceId: params.daoSpaceId,
|
|
188
|
+
proposalId: validated.proposalId,
|
|
189
|
+
votingMode: params.votingMode ?? 'FAST',
|
|
190
|
+
actions: [encodePublishEditProposalAction(params.daoSpaceAddress, cid)],
|
|
191
|
+
spaceRegistryAddress,
|
|
192
|
+
});
|
|
193
|
+
return {
|
|
194
|
+
editId,
|
|
195
|
+
cid,
|
|
196
|
+
...result,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Builds calldata for voting on a DAO proposal.
|
|
201
|
+
*
|
|
202
|
+
* @example
|
|
203
|
+
* ```ts
|
|
204
|
+
* const tx = geo.daoSpaces.proposals.vote({
|
|
205
|
+
* authorSpaceId,
|
|
206
|
+
* spaceId: daoSpaceId,
|
|
207
|
+
* proposalId,
|
|
208
|
+
* vote: 'YES',
|
|
209
|
+
* });
|
|
210
|
+
* ```
|
|
211
|
+
*
|
|
212
|
+
* @param context Client context containing the target network configuration.
|
|
213
|
+
* @param params Author space, DAO space, proposal ID, and vote option.
|
|
214
|
+
* @returns Target registry address and calldata for `GOVERNANCE.PROPOSAL_VOTED`.
|
|
215
|
+
* @throws When IDs are invalid or the configured network is missing `SPACE_REGISTRY_ADDRESS`.
|
|
216
|
+
*/
|
|
217
|
+
export function vote(context, params) {
|
|
218
|
+
const authorSpaceId = bytes16Id(params.authorSpaceId, 'authorSpaceId');
|
|
219
|
+
const spaceId = bytes16Id(params.spaceId, 'spaceId');
|
|
220
|
+
const proposalId = bytes16Id(params.proposalId, 'proposalId');
|
|
221
|
+
const topic = bytes16ToBytes32LeftAligned(proposalId);
|
|
222
|
+
const data = encodeAbiParameters([
|
|
223
|
+
{ type: 'bytes16', name: 'proposalId' },
|
|
224
|
+
{ type: 'uint8', name: 'voteOption' },
|
|
225
|
+
], [proposalId, VOTE_OPTION_VALUES[params.vote]]);
|
|
226
|
+
const calldata = encodeFunctionData({
|
|
227
|
+
abi: SpaceRegistryAbi,
|
|
228
|
+
functionName: 'enter',
|
|
229
|
+
args: [authorSpaceId, spaceId, PROPOSAL_VOTED_ACTION, topic, data, EMPTY_SIGNATURE],
|
|
230
|
+
});
|
|
231
|
+
return {
|
|
232
|
+
to: requireGeoContract(context.network, 'SPACE_REGISTRY_ADDRESS'),
|
|
233
|
+
calldata,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Builds calldata for executing a passed DAO proposal.
|
|
238
|
+
*
|
|
239
|
+
* @example
|
|
240
|
+
* ```ts
|
|
241
|
+
* const tx = geo.daoSpaces.proposals.execute({
|
|
242
|
+
* authorSpaceId,
|
|
243
|
+
* spaceId: daoSpaceId,
|
|
244
|
+
* proposalId,
|
|
245
|
+
* });
|
|
246
|
+
* ```
|
|
247
|
+
*
|
|
248
|
+
* @param context Client context containing the target network configuration.
|
|
249
|
+
* @param params Author space, DAO space, and proposal ID.
|
|
250
|
+
* @returns Target registry address and calldata for `GOVERNANCE.PROPOSAL_EXECUTED`.
|
|
251
|
+
* @throws When IDs are invalid or the configured network is missing `SPACE_REGISTRY_ADDRESS`.
|
|
252
|
+
*/
|
|
253
|
+
export function execute(context, params) {
|
|
254
|
+
const authorSpaceId = bytes16Id(params.authorSpaceId, 'authorSpaceId');
|
|
255
|
+
const spaceId = bytes16Id(params.spaceId, 'spaceId');
|
|
256
|
+
const proposalId = bytes16Id(params.proposalId, 'proposalId');
|
|
257
|
+
const topic = bytes16ToBytes32LeftAligned(proposalId);
|
|
258
|
+
const data = encodeAbiParameters([{ type: 'bytes16', name: 'proposalId' }], [proposalId]);
|
|
259
|
+
const calldata = encodeFunctionData({
|
|
260
|
+
abi: SpaceRegistryAbi,
|
|
261
|
+
functionName: 'enter',
|
|
262
|
+
args: [authorSpaceId, spaceId, PROPOSAL_EXECUTED_ACTION, topic, data, EMPTY_SIGNATURE],
|
|
263
|
+
});
|
|
264
|
+
return {
|
|
265
|
+
to: requireGeoContract(context.network, 'SPACE_REGISTRY_ADDRESS'),
|
|
266
|
+
calldata,
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Helpers for constructing DAO proposal actions.
|
|
271
|
+
*
|
|
272
|
+
* These helpers only encode DAO-space action payloads. Pass their results to
|
|
273
|
+
* `geo.daoSpaces.proposals.create(...)` when building a proposal from explicit actions.
|
|
274
|
+
*
|
|
275
|
+
* @example
|
|
276
|
+
* ```ts
|
|
277
|
+
* const action = geo.daoSpaces.proposals.actions.addEditor(daoSpaceAddress, editorSpaceId);
|
|
278
|
+
* const proposal = geo.daoSpaces.proposals.create({
|
|
279
|
+
* fromSpaceId: authorSpaceId,
|
|
280
|
+
* daoSpaceId,
|
|
281
|
+
* votingMode: 'SLOW',
|
|
282
|
+
* actions: [action],
|
|
283
|
+
* });
|
|
284
|
+
* ```
|
|
285
|
+
*/
|
|
286
|
+
export const actions = {
|
|
287
|
+
publishEdit: encodePublishEditProposalAction,
|
|
288
|
+
addEditor: (daoSpaceAddress, spaceId) => encodeDaoRoleAction(daoSpaceAddress, 'addEditor', spaceId),
|
|
289
|
+
removeEditor: (daoSpaceAddress, spaceId) => encodeDaoRoleAction(daoSpaceAddress, 'removeEditor', spaceId),
|
|
290
|
+
addMember: (daoSpaceAddress, spaceId) => encodeDaoRoleAction(daoSpaceAddress, 'addMember', spaceId),
|
|
291
|
+
removeMember: (daoSpaceAddress, spaceId) => encodeDaoRoleAction(daoSpaceAddress, 'removeMember', spaceId),
|
|
292
|
+
updateVotingSettings: encodeUpdateVotingSettingsAction,
|
|
293
|
+
};
|
|
294
|
+
//# sourceMappingURL=proposals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposals.js","sourceRoot":"","sources":["../../../src/client/proposals.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposals.test.d.ts","sourceRoot":"","sources":["../../../src/client/proposals.test.ts"],"names":[],"mappings":""}
|