@geoprotocol/geo-sdk 0.19.1 → 0.19.3
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/dist/examples/ranks/create-ordinal-rank.d.ts +1 -1
- package/dist/examples/ranks/create-ordinal-rank.js +9 -6
- package/dist/examples/ranks/create-ordinal-rank.js.map +1 -1
- package/dist/examples/ranks/create-weighted-rank.d.ts +1 -1
- package/dist/examples/ranks/create-weighted-rank.js +9 -6
- package/dist/examples/ranks/create-weighted-rank.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/src/abis/dao-space-factory.d.ts +6 -43
- package/dist/src/abis/dao-space-factory.d.ts.map +1 -1
- package/dist/src/abis/dao-space-factory.js +27 -38
- package/dist/src/abis/dao-space-factory.js.map +1 -1
- package/dist/src/abis/dao-space.d.ts +7 -98
- package/dist/src/abis/dao-space.d.ts.map +1 -1
- package/dist/src/abis/dao-space.js +99 -61
- package/dist/src/abis/dao-space.js.map +1 -1
- package/dist/src/abis/index.d.ts +2 -2
- package/dist/src/abis/index.d.ts.map +1 -1
- package/dist/src/abis/index.js +2 -2
- package/dist/src/abis/index.js.map +1 -1
- package/dist/src/abis/space-registry.d.ts +0 -26
- package/dist/src/abis/space-registry.d.ts.map +1 -1
- package/dist/src/abis/space-registry.js +0 -33
- package/dist/src/abis/space-registry.js.map +1 -1
- package/dist/src/client/dao-spaces.d.ts +33 -93
- package/dist/src/client/dao-spaces.d.ts.map +1 -1
- package/dist/src/client/dao-spaces.js +42 -174
- package/dist/src/client/dao-spaces.js.map +1 -1
- package/dist/src/client/dao-spaces.test.js +79 -313
- package/dist/src/client/dao-spaces.test.js.map +1 -1
- package/dist/src/client/personal-spaces.d.ts +0 -74
- package/dist/src/client/personal-spaces.d.ts.map +1 -1
- package/dist/src/client/personal-spaces.js +2 -82
- package/dist/src/client/personal-spaces.js.map +1 -1
- package/dist/src/client/ranks.d.ts +36 -0
- package/dist/src/client/ranks.d.ts.map +1 -0
- package/dist/src/client/ranks.js +57 -0
- package/dist/src/client/ranks.js.map +1 -0
- package/dist/src/client/ranks.test.d.ts +2 -0
- package/dist/src/client/ranks.test.d.ts.map +1 -0
- package/dist/src/client/ranks.test.js +96 -0
- package/dist/src/client/ranks.test.js.map +1 -0
- package/dist/src/client/spaces.test.js +7 -27
- package/dist/src/client/spaces.test.js.map +1 -1
- package/dist/src/client.d.ts +21 -33
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/client.js +81 -102
- package/dist/src/client.js.map +1 -1
- package/dist/src/client.test.js +3 -8
- package/dist/src/client.test.js.map +1 -1
- package/dist/src/core/ids/system.d.ts +8 -0
- package/dist/src/core/ids/system.d.ts.map +1 -1
- package/dist/src/core/ids/system.js +8 -0
- package/dist/src/core/ids/system.js.map +1 -1
- package/dist/src/dao-space/constants.d.ts +0 -10
- package/dist/src/dao-space/constants.d.ts.map +1 -1
- package/dist/src/dao-space/constants.js +0 -10
- package/dist/src/dao-space/constants.js.map +1 -1
- package/dist/src/dao-space/execute-proposal.d.ts +1 -1
- package/dist/src/dao-space/execute-proposal.js +2 -2
- package/dist/src/dao-space/execute-proposal.js.map +1 -1
- package/dist/src/dao-space/index.d.ts +1 -2
- package/dist/src/dao-space/index.d.ts.map +1 -1
- package/dist/src/dao-space/index.js +0 -1
- package/dist/src/dao-space/index.js.map +1 -1
- package/dist/src/dao-space/propose-add-editor.d.ts +20 -1
- package/dist/src/dao-space/propose-add-editor.d.ts.map +1 -1
- package/dist/src/dao-space/propose-add-editor.js +87 -12
- package/dist/src/dao-space/propose-add-editor.js.map +1 -1
- package/dist/src/dao-space/propose-add-editor.test.js +4 -16
- package/dist/src/dao-space/propose-add-editor.test.js.map +1 -1
- package/dist/src/dao-space/propose-add-member.d.ts +20 -1
- package/dist/src/dao-space/propose-add-member.d.ts.map +1 -1
- package/dist/src/dao-space/propose-add-member.js +87 -12
- package/dist/src/dao-space/propose-add-member.js.map +1 -1
- package/dist/src/dao-space/propose-add-member.test.js +0 -13
- package/dist/src/dao-space/propose-add-member.test.js.map +1 -1
- package/dist/src/dao-space/propose-edit.test.js +0 -45
- package/dist/src/dao-space/propose-edit.test.js.map +1 -1
- package/dist/src/dao-space/propose-remove-editor.d.ts +22 -1
- package/dist/src/dao-space/propose-remove-editor.d.ts.map +1 -1
- package/dist/src/dao-space/propose-remove-editor.js +94 -12
- package/dist/src/dao-space/propose-remove-editor.js.map +1 -1
- package/dist/src/dao-space/propose-remove-editor.test.js +4 -22
- package/dist/src/dao-space/propose-remove-editor.test.js.map +1 -1
- package/dist/src/dao-space/propose-remove-member.d.ts +22 -1
- package/dist/src/dao-space/propose-remove-member.d.ts.map +1 -1
- package/dist/src/dao-space/propose-remove-member.js +94 -12
- package/dist/src/dao-space/propose-remove-member.js.map +1 -1
- package/dist/src/dao-space/propose-remove-member.test.js +0 -19
- package/dist/src/dao-space/propose-remove-member.test.js.map +1 -1
- package/dist/src/dao-space/types.d.ts +11 -72
- package/dist/src/dao-space/types.d.ts.map +1 -1
- package/dist/src/dao-space/vote-proposal.d.ts +1 -1
- package/dist/src/dao-space/vote-proposal.js +2 -2
- package/dist/src/dao-space/vote-proposal.js.map +1 -1
- package/dist/src/dao-space/vote-proposal.test.js +0 -54
- package/dist/src/dao-space/vote-proposal.test.js.map +1 -1
- 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/{api-surface.e2e.test.js → e2e-api-surface.test.js} +101 -286
- package/dist/src/e2e-api-surface.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/{legacy-api-surface.e2e.test.js → e2e-legacy-api-surface.test.js} +70 -90
- package/dist/src/e2e-legacy-api-surface.test.js.map +1 -0
- package/dist/src/encodings/get-create-dao-space-calldata.d.ts +21 -34
- package/dist/src/encodings/get-create-dao-space-calldata.d.ts.map +1 -1
- package/dist/src/encodings/get-create-dao-space-calldata.js +35 -64
- package/dist/src/encodings/get-create-dao-space-calldata.js.map +1 -1
- package/dist/src/encodings/get-create-dao-space-calldata.test.js +64 -94
- package/dist/src/encodings/get-create-dao-space-calldata.test.js.map +1 -1
- package/dist/src/full-flow-test.test.js +2 -5
- package/dist/src/full-flow-test.test.js.map +1 -1
- package/dist/src/ops/index.d.ts +1 -0
- package/dist/src/ops/index.d.ts.map +1 -1
- package/dist/src/ops/index.js +1 -0
- package/dist/src/ops/index.js.map +1 -1
- package/dist/src/ops/ranks.d.ts +33 -0
- package/dist/src/ops/ranks.d.ts.map +1 -0
- package/dist/src/ops/ranks.js +33 -0
- package/dist/src/ops/ranks.js.map +1 -0
- package/dist/src/ops/ranks.test.d.ts +2 -0
- package/dist/src/ops/ranks.test.d.ts.map +1 -0
- package/dist/src/ops/ranks.test.js +36 -0
- package/dist/src/ops/ranks.test.js.map +1 -0
- package/dist/src/personal-space/constants.d.ts +1 -1
- package/dist/src/personal-space/constants.d.ts.map +1 -1
- package/dist/src/personal-space/constants.js +1 -1
- package/dist/src/personal-space/constants.js.map +1 -1
- package/dist/src/personal-space/create-space.d.ts +2 -2
- package/dist/src/personal-space/create-space.d.ts.map +1 -1
- package/dist/src/personal-space/create-space.js +3 -4
- package/dist/src/personal-space/create-space.js.map +1 -1
- package/dist/src/personal-space/types.d.ts +1 -4
- package/dist/src/personal-space/types.d.ts.map +1 -1
- package/dist/src/ranks/create-rank.d.ts +19 -9
- package/dist/src/ranks/create-rank.d.ts.map +1 -1
- package/dist/src/ranks/create-rank.js +34 -57
- package/dist/src/ranks/create-rank.js.map +1 -1
- package/dist/src/ranks/create-rank.test.js +151 -23
- package/dist/src/ranks/create-rank.test.js.map +1 -1
- package/dist/src/ranks/index.d.ts +0 -1
- package/dist/src/ranks/index.d.ts.map +1 -1
- package/dist/src/ranks/index.js +0 -1
- package/dist/src/ranks/index.js.map +1 -1
- package/dist/src/ranks/types.d.ts +30 -0
- package/dist/src/ranks/types.d.ts.map +1 -1
- package/dist/src/ranks/update-rank.d.ts +40 -0
- package/dist/src/ranks/update-rank.d.ts.map +1 -0
- package/dist/src/ranks/update-rank.js +61 -0
- package/dist/src/ranks/update-rank.js.map +1 -0
- package/dist/src/ranks/update-rank.test.d.ts +2 -0
- package/dist/src/ranks/update-rank.test.d.ts.map +1 -0
- package/dist/src/ranks/update-rank.test.js +120 -0
- package/dist/src/ranks/update-rank.test.js.map +1 -0
- package/dist/src/ranks/vote-ops.d.ts +37 -0
- package/dist/src/ranks/vote-ops.d.ts.map +1 -0
- package/dist/src/ranks/vote-ops.js +96 -0
- package/dist/src/ranks/vote-ops.js.map +1 -0
- package/package.json +1 -1
- package/dist/src/abis/dao-space-v2.test.d.ts +0 -2
- package/dist/src/abis/dao-space-v2.test.d.ts.map +0 -1
- package/dist/src/abis/dao-space-v2.test.js +0 -67
- package/dist/src/abis/dao-space-v2.test.js.map +0 -1
- package/dist/src/api-surface.e2e.test.d.ts +0 -2
- package/dist/src/api-surface.e2e.test.d.ts.map +0 -1
- package/dist/src/api-surface.e2e.test.js.map +0 -1
- package/dist/src/contracts-v2/local-geobrowser.e2e.test.d.ts +0 -2
- package/dist/src/contracts-v2/local-geobrowser.e2e.test.d.ts.map +0 -1
- package/dist/src/contracts-v2/local-geobrowser.e2e.test.js +0 -239
- package/dist/src/contracts-v2/local-geobrowser.e2e.test.js.map +0 -1
- package/dist/src/dao-space/propose-update-voting-settings.d.ts +0 -8
- package/dist/src/dao-space/propose-update-voting-settings.d.ts.map +0 -1
- package/dist/src/dao-space/propose-update-voting-settings.js +0 -19
- package/dist/src/dao-space/propose-update-voting-settings.js.map +0 -1
- package/dist/src/dao-space/propose-update-voting-settings.test.d.ts +0 -2
- package/dist/src/dao-space/propose-update-voting-settings.test.d.ts.map +0 -1
- package/dist/src/dao-space/propose-update-voting-settings.test.js +0 -118
- package/dist/src/dao-space/propose-update-voting-settings.test.js.map +0 -1
- package/dist/src/e2e-test-environment.d.ts +0 -26
- package/dist/src/e2e-test-environment.d.ts.map +0 -1
- package/dist/src/e2e-test-environment.js +0 -150
- package/dist/src/e2e-test-environment.js.map +0 -1
- package/dist/src/legacy-api-surface.e2e.test.d.ts +0 -2
- package/dist/src/legacy-api-surface.e2e.test.d.ts.map +0 -1
- package/dist/src/legacy-api-surface.e2e.test.js.map +0 -1
|
@@ -2,7 +2,28 @@ import type { ProposeRemoveEditorParams, ProposeRemoveEditorResult } from './typ
|
|
|
2
2
|
/**
|
|
3
3
|
* Creates a proposal to remove an editor from a DAO space.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* This function:
|
|
6
|
+
* 1. Validates the author, DAO space, and editor IDs
|
|
7
|
+
* 2. Encodes the `removeEditor()` call as the proposal action
|
|
8
|
+
* 3. Encodes the SpaceRegistry's `enter()` call with the `PROPOSAL_CREATED` action
|
|
9
|
+
*
|
|
10
|
+
* @param params - The parameters for proposing editor removal
|
|
11
|
+
* @returns Object containing `to` (Space Registry address), `calldata`, and `proposalId`
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { daoSpace } from '@geoprotocol/geo-sdk';
|
|
16
|
+
*
|
|
17
|
+
* const { to, calldata, proposalId } = daoSpace.proposeRemoveEditor({
|
|
18
|
+
* authorSpaceId: '0xAuthorBytes16SpaceId...',
|
|
19
|
+
* spaceId: '0xDAOBytes16SpaceId...',
|
|
20
|
+
* editorToRemoveSpaceId: '0xEditorBytes16SpaceId...',
|
|
21
|
+
* network: 'TESTNET',
|
|
22
|
+
* });
|
|
23
|
+
*
|
|
24
|
+
* // Submit the transaction using viem or another client
|
|
25
|
+
* await walletClient.sendTransaction({ to, data: calldata });
|
|
26
|
+
* ```
|
|
6
27
|
*/
|
|
7
28
|
export declare function proposeRemoveEditor(params: ProposeRemoveEditorParams): ProposeRemoveEditorResult;
|
|
8
29
|
//# sourceMappingURL=propose-remove-editor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"propose-remove-editor.d.ts","sourceRoot":"","sources":["../../../src/dao-space/propose-remove-editor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"propose-remove-editor.d.ts","sourceRoot":"","sources":["../../../src/dao-space/propose-remove-editor.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,yBAAyB,GAAG,yBAAyB,CA4FhG"}
|
|
@@ -1,22 +1,104 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
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, ensure0xPrefix, getContractAddressesBasedOnNetwork, isBytes16Hex, PROPOSAL_CREATED_ACTION, } from './constants.js';
|
|
4
5
|
/**
|
|
5
6
|
* Creates a proposal to remove an editor from a DAO space.
|
|
6
7
|
*
|
|
7
|
-
*
|
|
8
|
+
* This function:
|
|
9
|
+
* 1. Validates the author, DAO space, and editor IDs
|
|
10
|
+
* 2. Encodes the `removeEditor()` call as the proposal action
|
|
11
|
+
* 3. Encodes the SpaceRegistry's `enter()` call with the `PROPOSAL_CREATED` action
|
|
12
|
+
*
|
|
13
|
+
* @param params - The parameters for proposing editor removal
|
|
14
|
+
* @returns Object containing `to` (Space Registry address), `calldata`, and `proposalId`
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* import { daoSpace } from '@geoprotocol/geo-sdk';
|
|
19
|
+
*
|
|
20
|
+
* const { to, calldata, proposalId } = daoSpace.proposeRemoveEditor({
|
|
21
|
+
* authorSpaceId: '0xAuthorBytes16SpaceId...',
|
|
22
|
+
* spaceId: '0xDAOBytes16SpaceId...',
|
|
23
|
+
* editorToRemoveSpaceId: '0xEditorBytes16SpaceId...',
|
|
24
|
+
* network: 'TESTNET',
|
|
25
|
+
* });
|
|
26
|
+
*
|
|
27
|
+
* // Submit the transaction using viem or another client
|
|
28
|
+
* await walletClient.sendTransaction({ to, data: calldata });
|
|
29
|
+
* ```
|
|
8
30
|
*/
|
|
9
31
|
export function proposeRemoveEditor(params) {
|
|
10
|
-
const { network = 'TESTNET',
|
|
11
|
-
|
|
12
|
-
|
|
32
|
+
const { authorSpaceId: rawAuthorSpaceId, spaceId: rawSpaceId, editorToRemoveSpaceId: rawEditorToRemoveSpaceId, votingMode = 'SLOW', proposalId: rawProposalId, network = 'TESTNET', } = params;
|
|
33
|
+
// Ensure 0x prefix on all IDs
|
|
34
|
+
const authorSpaceId = ensure0xPrefix(rawAuthorSpaceId);
|
|
35
|
+
const spaceId = ensure0xPrefix(rawSpaceId);
|
|
36
|
+
const editorToRemoveSpaceId = ensure0xPrefix(rawEditorToRemoveSpaceId);
|
|
37
|
+
// Validate inputs
|
|
38
|
+
if (!isBytes16Hex(authorSpaceId)) {
|
|
39
|
+
throw new Error(`authorSpaceId must be bytes16 hex (32 hex chars). Received: ${rawAuthorSpaceId}`);
|
|
40
|
+
}
|
|
41
|
+
if (!isBytes16Hex(spaceId)) {
|
|
42
|
+
throw new Error(`spaceId must be bytes16 hex (32 hex chars). Received: ${rawSpaceId}`);
|
|
13
43
|
}
|
|
14
|
-
if (!isBytes16Hex(
|
|
15
|
-
throw new Error(`
|
|
44
|
+
if (!isBytes16Hex(editorToRemoveSpaceId)) {
|
|
45
|
+
throw new Error(`editorToRemoveSpaceId must be bytes16 hex (32 hex chars). Received: ${rawEditorToRemoveSpaceId}`);
|
|
16
46
|
}
|
|
17
|
-
|
|
18
|
-
|
|
47
|
+
// Generate or use provided proposal ID (UUID v4 as bytes16 hex)
|
|
48
|
+
const proposalId = rawProposalId
|
|
49
|
+
? ensure0xPrefix(rawProposalId)
|
|
50
|
+
: `0x${uuidv4().replaceAll('-', '')}`;
|
|
51
|
+
if (!isBytes16Hex(proposalId)) {
|
|
52
|
+
throw new Error(`proposalId must be bytes16 hex (32 hex chars). Received: ${rawProposalId}`);
|
|
19
53
|
}
|
|
20
|
-
|
|
54
|
+
// Encode the removeEditor function call: removeEditor(bytes16 _oldEditorSpaceId)
|
|
55
|
+
const proposalActionCalldata = encodeFunctionData({
|
|
56
|
+
abi: DaoSpaceAbi,
|
|
57
|
+
functionName: 'removeEditor',
|
|
58
|
+
args: [editorToRemoveSpaceId],
|
|
59
|
+
});
|
|
60
|
+
const contracts = getContractAddressesBasedOnNetwork(network);
|
|
61
|
+
// Create the proposal action (calling removeEditor on the Space Registry)
|
|
62
|
+
const proposalActions = [
|
|
63
|
+
{
|
|
64
|
+
to: contracts.SPACE_REGISTRY_ADDRESS,
|
|
65
|
+
value: 0n,
|
|
66
|
+
data: proposalActionCalldata,
|
|
67
|
+
},
|
|
68
|
+
];
|
|
69
|
+
// Encode the proposal data: abi.encode(bytes16 proposalId, VotingMode votingMode, Action[] actions)
|
|
70
|
+
const data = encodeAbiParameters([
|
|
71
|
+
{ type: 'bytes16', name: 'proposalId' },
|
|
72
|
+
{ type: 'uint8', name: 'votingMode' },
|
|
73
|
+
{
|
|
74
|
+
type: 'tuple[]',
|
|
75
|
+
name: 'actions',
|
|
76
|
+
components: [
|
|
77
|
+
{ type: 'address', name: 'to' },
|
|
78
|
+
{ type: 'uint256', name: 'value' },
|
|
79
|
+
{ type: 'bytes', name: 'data' },
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
], [proposalId, votingMode === 'FAST' ? 1 : 0, proposalActions]);
|
|
83
|
+
// Convert proposalId to bytes32 for the topic (left-aligned)
|
|
84
|
+
const topic = bytes16ToBytes32LeftAligned(proposalId);
|
|
85
|
+
// Encode the SpaceRegistry.enter() call
|
|
86
|
+
const calldata = encodeFunctionData({
|
|
87
|
+
abi: SpaceRegistryAbi,
|
|
88
|
+
functionName: 'enter',
|
|
89
|
+
args: [
|
|
90
|
+
authorSpaceId, // fromSpaceId
|
|
91
|
+
spaceId, // toSpaceId
|
|
92
|
+
PROPOSAL_CREATED_ACTION, // action
|
|
93
|
+
topic, // topic (proposalId left-aligned to bytes32)
|
|
94
|
+
data, // data (encoded proposal)
|
|
95
|
+
EMPTY_SIGNATURE, // signature (unused when msg.sender == fromSpace)
|
|
96
|
+
],
|
|
97
|
+
});
|
|
98
|
+
return {
|
|
99
|
+
to: contracts.SPACE_REGISTRY_ADDRESS,
|
|
100
|
+
calldata,
|
|
101
|
+
proposalId,
|
|
102
|
+
};
|
|
21
103
|
}
|
|
22
104
|
//# sourceMappingURL=propose-remove-editor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"propose-remove-editor.js","sourceRoot":"","sources":["../../../src/dao-space/propose-remove-editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"propose-remove-editor.js","sourceRoot":"","sources":["../../../src/dao-space/propose-remove-editor.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,13 +6,11 @@ describe('proposeRemoveEditor', () => {
|
|
|
6
6
|
// Valid test values
|
|
7
7
|
const validAuthorSpaceId = '0x0eed5491b917cf58b33ac81255fe7ae9';
|
|
8
8
|
const validSpaceId = '0xabcdef12345678901234567890abcdef';
|
|
9
|
-
const validDaoSpaceAddress = '0x1234567890123456789012345678901234567890';
|
|
10
9
|
const validEditorToRemove = '0x11111111111111111111111111111111';
|
|
11
10
|
it('should return correct structure', () => {
|
|
12
11
|
const result = proposeRemoveEditor({
|
|
13
12
|
authorSpaceId: validAuthorSpaceId,
|
|
14
13
|
spaceId: validSpaceId,
|
|
15
|
-
daoSpaceAddress: validDaoSpaceAddress,
|
|
16
14
|
editorToRemoveSpaceId: validEditorToRemove,
|
|
17
15
|
});
|
|
18
16
|
expect(result).toHaveProperty('to');
|
|
@@ -23,7 +21,6 @@ describe('proposeRemoveEditor', () => {
|
|
|
23
21
|
const { to } = proposeRemoveEditor({
|
|
24
22
|
authorSpaceId: validAuthorSpaceId,
|
|
25
23
|
spaceId: validSpaceId,
|
|
26
|
-
daoSpaceAddress: validDaoSpaceAddress,
|
|
27
24
|
editorToRemoveSpaceId: validEditorToRemove,
|
|
28
25
|
});
|
|
29
26
|
expect(to).toBe(TESTNET.SPACE_REGISTRY_ADDRESS);
|
|
@@ -32,7 +29,6 @@ describe('proposeRemoveEditor', () => {
|
|
|
32
29
|
const { calldata } = proposeRemoveEditor({
|
|
33
30
|
authorSpaceId: validAuthorSpaceId,
|
|
34
31
|
spaceId: validSpaceId,
|
|
35
|
-
daoSpaceAddress: validDaoSpaceAddress,
|
|
36
32
|
editorToRemoveSpaceId: validEditorToRemove,
|
|
37
33
|
});
|
|
38
34
|
expect(calldata).toBeTypeOf('string');
|
|
@@ -42,7 +38,6 @@ describe('proposeRemoveEditor', () => {
|
|
|
42
38
|
const { proposalId } = proposeRemoveEditor({
|
|
43
39
|
authorSpaceId: validAuthorSpaceId,
|
|
44
40
|
spaceId: validSpaceId,
|
|
45
|
-
daoSpaceAddress: validDaoSpaceAddress,
|
|
46
41
|
editorToRemoveSpaceId: validEditorToRemove,
|
|
47
42
|
});
|
|
48
43
|
expect(proposalId).toMatch(BYTES16_HEX_REGEX);
|
|
@@ -52,7 +47,6 @@ describe('proposeRemoveEditor', () => {
|
|
|
52
47
|
const { proposalId } = proposeRemoveEditor({
|
|
53
48
|
authorSpaceId: validAuthorSpaceId,
|
|
54
49
|
spaceId: validSpaceId,
|
|
55
|
-
daoSpaceAddress: validDaoSpaceAddress,
|
|
56
50
|
editorToRemoveSpaceId: validEditorToRemove,
|
|
57
51
|
proposalId: customProposalId,
|
|
58
52
|
});
|
|
@@ -62,25 +56,23 @@ describe('proposeRemoveEditor', () => {
|
|
|
62
56
|
const result = proposeRemoveEditor({
|
|
63
57
|
authorSpaceId: validAuthorSpaceId,
|
|
64
58
|
spaceId: validSpaceId,
|
|
65
|
-
daoSpaceAddress: validDaoSpaceAddress,
|
|
66
59
|
editorToRemoveSpaceId: validEditorToRemove,
|
|
67
60
|
});
|
|
68
61
|
expect(result.calldata).toBeTruthy();
|
|
69
62
|
});
|
|
70
|
-
it('should
|
|
71
|
-
|
|
63
|
+
it('should preserve legacy FAST voting mode support', () => {
|
|
64
|
+
const result = proposeRemoveEditor({
|
|
72
65
|
authorSpaceId: validAuthorSpaceId,
|
|
73
66
|
spaceId: validSpaceId,
|
|
74
|
-
daoSpaceAddress: validDaoSpaceAddress,
|
|
75
67
|
editorToRemoveSpaceId: validEditorToRemove,
|
|
76
68
|
votingMode: 'FAST',
|
|
77
|
-
})
|
|
69
|
+
});
|
|
70
|
+
expect(result.calldata).toBeTruthy();
|
|
78
71
|
});
|
|
79
72
|
it('should accept explicit SLOW voting mode', () => {
|
|
80
73
|
const params = {
|
|
81
74
|
authorSpaceId: validAuthorSpaceId,
|
|
82
75
|
spaceId: validSpaceId,
|
|
83
|
-
daoSpaceAddress: validDaoSpaceAddress,
|
|
84
76
|
editorToRemoveSpaceId: validEditorToRemove,
|
|
85
77
|
};
|
|
86
78
|
const slowResult = proposeRemoveEditor({ ...params, votingMode: 'SLOW' });
|
|
@@ -92,14 +84,12 @@ describe('proposeRemoveEditor', () => {
|
|
|
92
84
|
const result1 = proposeRemoveEditor({
|
|
93
85
|
authorSpaceId: validAuthorSpaceId,
|
|
94
86
|
spaceId: validSpaceId,
|
|
95
|
-
daoSpaceAddress: validDaoSpaceAddress,
|
|
96
87
|
editorToRemoveSpaceId: validEditorToRemove,
|
|
97
88
|
proposalId: sharedProposalId,
|
|
98
89
|
});
|
|
99
90
|
const result2 = proposeRemoveEditor({
|
|
100
91
|
authorSpaceId: validAuthorSpaceId,
|
|
101
92
|
spaceId: validSpaceId,
|
|
102
|
-
daoSpaceAddress: validDaoSpaceAddress,
|
|
103
93
|
editorToRemoveSpaceId: otherEditor,
|
|
104
94
|
proposalId: sharedProposalId,
|
|
105
95
|
});
|
|
@@ -109,7 +99,6 @@ describe('proposeRemoveEditor', () => {
|
|
|
109
99
|
const result = proposeRemoveEditor({
|
|
110
100
|
authorSpaceId: '0eed5491b917cf58b33ac81255fe7ae9',
|
|
111
101
|
spaceId: 'abcdef12345678901234567890abcdef',
|
|
112
|
-
daoSpaceAddress: validDaoSpaceAddress,
|
|
113
102
|
editorToRemoveSpaceId: '11111111111111111111111111111111',
|
|
114
103
|
});
|
|
115
104
|
expect(result.calldata).toBeTruthy();
|
|
@@ -119,14 +108,12 @@ describe('proposeRemoveEditor', () => {
|
|
|
119
108
|
const withPrefix = proposeRemoveEditor({
|
|
120
109
|
authorSpaceId: '0x0eed5491b917cf58b33ac81255fe7ae9',
|
|
121
110
|
spaceId: '0xabcdef12345678901234567890abcdef',
|
|
122
|
-
daoSpaceAddress: validDaoSpaceAddress,
|
|
123
111
|
editorToRemoveSpaceId: '0x11111111111111111111111111111111',
|
|
124
112
|
proposalId,
|
|
125
113
|
});
|
|
126
114
|
const withoutPrefix = proposeRemoveEditor({
|
|
127
115
|
authorSpaceId: '0eed5491b917cf58b33ac81255fe7ae9',
|
|
128
116
|
spaceId: 'abcdef12345678901234567890abcdef',
|
|
129
|
-
daoSpaceAddress: validDaoSpaceAddress,
|
|
130
117
|
editorToRemoveSpaceId: '11111111111111111111111111111111',
|
|
131
118
|
proposalId,
|
|
132
119
|
});
|
|
@@ -136,7 +123,6 @@ describe('proposeRemoveEditor', () => {
|
|
|
136
123
|
const params = {
|
|
137
124
|
authorSpaceId: validAuthorSpaceId,
|
|
138
125
|
spaceId: validSpaceId,
|
|
139
|
-
daoSpaceAddress: validDaoSpaceAddress,
|
|
140
126
|
editorToRemoveSpaceId: validEditorToRemove,
|
|
141
127
|
};
|
|
142
128
|
const result1 = proposeRemoveEditor(params);
|
|
@@ -147,7 +133,6 @@ describe('proposeRemoveEditor', () => {
|
|
|
147
133
|
expect(() => proposeRemoveEditor({
|
|
148
134
|
authorSpaceId: 'invalid',
|
|
149
135
|
spaceId: validSpaceId,
|
|
150
|
-
daoSpaceAddress: validDaoSpaceAddress,
|
|
151
136
|
editorToRemoveSpaceId: validEditorToRemove,
|
|
152
137
|
})).toThrow('authorSpaceId must be bytes16 hex');
|
|
153
138
|
});
|
|
@@ -155,7 +140,6 @@ describe('proposeRemoveEditor', () => {
|
|
|
155
140
|
expect(() => proposeRemoveEditor({
|
|
156
141
|
authorSpaceId: validAuthorSpaceId,
|
|
157
142
|
spaceId: 'tooshort',
|
|
158
|
-
daoSpaceAddress: validDaoSpaceAddress,
|
|
159
143
|
editorToRemoveSpaceId: validEditorToRemove,
|
|
160
144
|
})).toThrow('spaceId must be bytes16 hex');
|
|
161
145
|
});
|
|
@@ -163,7 +147,6 @@ describe('proposeRemoveEditor', () => {
|
|
|
163
147
|
expect(() => proposeRemoveEditor({
|
|
164
148
|
authorSpaceId: validAuthorSpaceId,
|
|
165
149
|
spaceId: validSpaceId,
|
|
166
|
-
daoSpaceAddress: validDaoSpaceAddress,
|
|
167
150
|
editorToRemoveSpaceId: 'badid',
|
|
168
151
|
})).toThrow('editorToRemoveSpaceId must be bytes16 hex');
|
|
169
152
|
});
|
|
@@ -171,7 +154,6 @@ describe('proposeRemoveEditor', () => {
|
|
|
171
154
|
expect(() => proposeRemoveEditor({
|
|
172
155
|
authorSpaceId: validAuthorSpaceId,
|
|
173
156
|
spaceId: validSpaceId,
|
|
174
|
-
daoSpaceAddress: validDaoSpaceAddress,
|
|
175
157
|
editorToRemoveSpaceId: validEditorToRemove,
|
|
176
158
|
proposalId: 'badproposalid',
|
|
177
159
|
})).toThrow('proposalId must be bytes16 hex');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"propose-remove-editor.test.js","sourceRoot":"","sources":["../../../src/dao-space/propose-remove-editor.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,oBAAoB;IACpB,MAAM,kBAAkB,GAAG,oCAA6C,CAAC;IACzE,MAAM,YAAY,GAAG,oCAA6C,CAAC;
|
|
1
|
+
{"version":3,"file":"propose-remove-editor.test.js","sourceRoot":"","sources":["../../../src/dao-space/propose-remove-editor.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,28 @@ import type { ProposeRemoveMemberParams, ProposeRemoveMemberResult } from './typ
|
|
|
2
2
|
/**
|
|
3
3
|
* Creates a proposal to remove a member from a DAO space.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* This function:
|
|
6
|
+
* 1. Validates the author, DAO space, and member IDs
|
|
7
|
+
* 2. Encodes the `removeMember()` call as the proposal action
|
|
8
|
+
* 3. Encodes the SpaceRegistry's `enter()` call with the `PROPOSAL_CREATED` action
|
|
9
|
+
*
|
|
10
|
+
* @param params - The parameters for proposing member removal
|
|
11
|
+
* @returns Object containing `to` (Space Registry address), `calldata`, and `proposalId`
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { daoSpace } from '@geoprotocol/geo-sdk';
|
|
16
|
+
*
|
|
17
|
+
* const { to, calldata, proposalId } = daoSpace.proposeRemoveMember({
|
|
18
|
+
* authorSpaceId: '0xAuthorBytes16SpaceId...',
|
|
19
|
+
* spaceId: '0xDAOBytes16SpaceId...',
|
|
20
|
+
* memberToRemoveSpaceId: '0xMemberBytes16SpaceId...',
|
|
21
|
+
* network: 'TESTNET',
|
|
22
|
+
* });
|
|
23
|
+
*
|
|
24
|
+
* // Submit the transaction using viem or another client
|
|
25
|
+
* await walletClient.sendTransaction({ to, data: calldata });
|
|
26
|
+
* ```
|
|
6
27
|
*/
|
|
7
28
|
export declare function proposeRemoveMember(params: ProposeRemoveMemberParams): ProposeRemoveMemberResult;
|
|
8
29
|
//# sourceMappingURL=propose-remove-member.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"propose-remove-member.d.ts","sourceRoot":"","sources":["../../../src/dao-space/propose-remove-member.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"propose-remove-member.d.ts","sourceRoot":"","sources":["../../../src/dao-space/propose-remove-member.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,yBAAyB,GAAG,yBAAyB,CA4FhG"}
|
|
@@ -1,22 +1,104 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
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, ensure0xPrefix, getContractAddressesBasedOnNetwork, isBytes16Hex, PROPOSAL_CREATED_ACTION, } from './constants.js';
|
|
4
5
|
/**
|
|
5
6
|
* Creates a proposal to remove a member from a DAO space.
|
|
6
7
|
*
|
|
7
|
-
*
|
|
8
|
+
* This function:
|
|
9
|
+
* 1. Validates the author, DAO space, and member IDs
|
|
10
|
+
* 2. Encodes the `removeMember()` call as the proposal action
|
|
11
|
+
* 3. Encodes the SpaceRegistry's `enter()` call with the `PROPOSAL_CREATED` action
|
|
12
|
+
*
|
|
13
|
+
* @param params - The parameters for proposing member removal
|
|
14
|
+
* @returns Object containing `to` (Space Registry address), `calldata`, and `proposalId`
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* import { daoSpace } from '@geoprotocol/geo-sdk';
|
|
19
|
+
*
|
|
20
|
+
* const { to, calldata, proposalId } = daoSpace.proposeRemoveMember({
|
|
21
|
+
* authorSpaceId: '0xAuthorBytes16SpaceId...',
|
|
22
|
+
* spaceId: '0xDAOBytes16SpaceId...',
|
|
23
|
+
* memberToRemoveSpaceId: '0xMemberBytes16SpaceId...',
|
|
24
|
+
* network: 'TESTNET',
|
|
25
|
+
* });
|
|
26
|
+
*
|
|
27
|
+
* // Submit the transaction using viem or another client
|
|
28
|
+
* await walletClient.sendTransaction({ to, data: calldata });
|
|
29
|
+
* ```
|
|
8
30
|
*/
|
|
9
31
|
export function proposeRemoveMember(params) {
|
|
10
|
-
const { network = 'TESTNET',
|
|
11
|
-
|
|
12
|
-
|
|
32
|
+
const { authorSpaceId: rawAuthorSpaceId, spaceId: rawSpaceId, memberToRemoveSpaceId: rawMemberToRemoveSpaceId, votingMode = 'SLOW', proposalId: rawProposalId, network = 'TESTNET', } = params;
|
|
33
|
+
// Ensure 0x prefix on all IDs
|
|
34
|
+
const authorSpaceId = ensure0xPrefix(rawAuthorSpaceId);
|
|
35
|
+
const spaceId = ensure0xPrefix(rawSpaceId);
|
|
36
|
+
const memberToRemoveSpaceId = ensure0xPrefix(rawMemberToRemoveSpaceId);
|
|
37
|
+
// Validate inputs
|
|
38
|
+
if (!isBytes16Hex(authorSpaceId)) {
|
|
39
|
+
throw new Error(`authorSpaceId must be bytes16 hex (32 hex chars). Received: ${rawAuthorSpaceId}`);
|
|
40
|
+
}
|
|
41
|
+
if (!isBytes16Hex(spaceId)) {
|
|
42
|
+
throw new Error(`spaceId must be bytes16 hex (32 hex chars). Received: ${rawSpaceId}`);
|
|
13
43
|
}
|
|
14
|
-
if (!isBytes16Hex(
|
|
15
|
-
throw new Error(`
|
|
44
|
+
if (!isBytes16Hex(memberToRemoveSpaceId)) {
|
|
45
|
+
throw new Error(`memberToRemoveSpaceId must be bytes16 hex (32 hex chars). Received: ${rawMemberToRemoveSpaceId}`);
|
|
16
46
|
}
|
|
17
|
-
|
|
18
|
-
|
|
47
|
+
// Generate or use provided proposal ID (UUID v4 as bytes16 hex)
|
|
48
|
+
const proposalId = rawProposalId
|
|
49
|
+
? ensure0xPrefix(rawProposalId)
|
|
50
|
+
: `0x${uuidv4().replaceAll('-', '')}`;
|
|
51
|
+
if (!isBytes16Hex(proposalId)) {
|
|
52
|
+
throw new Error(`proposalId must be bytes16 hex (32 hex chars). Received: ${rawProposalId}`);
|
|
19
53
|
}
|
|
20
|
-
|
|
54
|
+
// Encode the removeMember function call: removeMember(bytes16 _oldMemberSpaceId)
|
|
55
|
+
const proposalActionCalldata = encodeFunctionData({
|
|
56
|
+
abi: DaoSpaceAbi,
|
|
57
|
+
functionName: 'removeMember',
|
|
58
|
+
args: [memberToRemoveSpaceId],
|
|
59
|
+
});
|
|
60
|
+
const contracts = getContractAddressesBasedOnNetwork(network);
|
|
61
|
+
// Create the proposal action (calling removeMember on the Space Registry)
|
|
62
|
+
const proposalActions = [
|
|
63
|
+
{
|
|
64
|
+
to: contracts.SPACE_REGISTRY_ADDRESS,
|
|
65
|
+
value: 0n,
|
|
66
|
+
data: proposalActionCalldata,
|
|
67
|
+
},
|
|
68
|
+
];
|
|
69
|
+
// Encode the proposal data: abi.encode(bytes16 proposalId, VotingMode votingMode, Action[] actions)
|
|
70
|
+
const data = encodeAbiParameters([
|
|
71
|
+
{ type: 'bytes16', name: 'proposalId' },
|
|
72
|
+
{ type: 'uint8', name: 'votingMode' },
|
|
73
|
+
{
|
|
74
|
+
type: 'tuple[]',
|
|
75
|
+
name: 'actions',
|
|
76
|
+
components: [
|
|
77
|
+
{ type: 'address', name: 'to' },
|
|
78
|
+
{ type: 'uint256', name: 'value' },
|
|
79
|
+
{ type: 'bytes', name: 'data' },
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
], [proposalId, votingMode === 'FAST' ? 1 : 0, proposalActions]);
|
|
83
|
+
// Convert proposalId to bytes32 for the topic (left-aligned)
|
|
84
|
+
const topic = bytes16ToBytes32LeftAligned(proposalId);
|
|
85
|
+
// Encode the SpaceRegistry.enter() call
|
|
86
|
+
const calldata = encodeFunctionData({
|
|
87
|
+
abi: SpaceRegistryAbi,
|
|
88
|
+
functionName: 'enter',
|
|
89
|
+
args: [
|
|
90
|
+
authorSpaceId, // fromSpaceId
|
|
91
|
+
spaceId, // toSpaceId
|
|
92
|
+
PROPOSAL_CREATED_ACTION, // action
|
|
93
|
+
topic, // topic (proposalId left-aligned to bytes32)
|
|
94
|
+
data, // data (encoded proposal)
|
|
95
|
+
EMPTY_SIGNATURE, // signature (unused when msg.sender == fromSpace)
|
|
96
|
+
],
|
|
97
|
+
});
|
|
98
|
+
return {
|
|
99
|
+
to: contracts.SPACE_REGISTRY_ADDRESS,
|
|
100
|
+
calldata,
|
|
101
|
+
proposalId,
|
|
102
|
+
};
|
|
21
103
|
}
|
|
22
104
|
//# sourceMappingURL=propose-remove-member.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"propose-remove-member.js","sourceRoot":"","sources":["../../../src/dao-space/propose-remove-member.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"propose-remove-member.js","sourceRoot":"","sources":["../../../src/dao-space/propose-remove-member.ts"],"names":[],"mappings":"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"}
|