@geoprotocol/geo-sdk 0.19.0 → 0.20.0-beta.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 +98 -45
- 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 +43 -6
- package/dist/src/abis/dao-space-factory.d.ts.map +1 -1
- package/dist/src/abis/dao-space-factory.js +38 -27
- package/dist/src/abis/dao-space-factory.js.map +1 -1
- package/dist/src/abis/dao-space.d.ts +98 -7
- package/dist/src/abis/dao-space.d.ts.map +1 -1
- package/dist/src/abis/dao-space.js +61 -99
- 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/api-surface.e2e.test.d.ts +2 -0
- package/dist/src/api-surface.e2e.test.d.ts.map +1 -0
- package/dist/src/{e2e-api-surface.test.js → api-surface.e2e.test.js} +87 -101
- package/dist/src/api-surface.e2e.test.js.map +1 -0
- package/dist/src/client/dao-spaces.d.ts +65 -33
- package/dist/src/client/dao-spaces.d.ts.map +1 -1
- package/dist/src/client/dao-spaces.js +133 -42
- package/dist/src/client/dao-spaces.js.map +1 -1
- package/dist/src/client/dao-spaces.test.js +277 -79
- package/dist/src/client/dao-spaces.test.js.map +1 -1
- package/dist/src/client/personal-spaces.js +2 -2
- package/dist/src/client/personal-spaces.js.map +1 -1
- package/dist/src/client/spaces.test.js +9 -7
- package/dist/src/client/spaces.test.js.map +1 -1
- package/dist/src/client.d.ts +19 -16
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/client.js +48 -59
- package/dist/src/client.js.map +1 -1
- package/dist/src/client.test.js +8 -3
- package/dist/src/client.test.js.map +1 -1
- package/dist/src/dao-space/constants.d.ts +10 -0
- package/dist/src/dao-space/constants.d.ts.map +1 -1
- package/dist/src/dao-space/constants.js +10 -0
- 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 +2 -1
- package/dist/src/dao-space/index.d.ts.map +1 -1
- package/dist/src/dao-space/index.js +1 -0
- package/dist/src/dao-space/index.js.map +1 -1
- package/dist/src/dao-space/propose-add-editor.d.ts +1 -20
- package/dist/src/dao-space/propose-add-editor.d.ts.map +1 -1
- package/dist/src/dao-space/propose-add-editor.js +12 -87
- package/dist/src/dao-space/propose-add-editor.js.map +1 -1
- package/dist/src/dao-space/propose-add-editor.test.js +16 -4
- package/dist/src/dao-space/propose-add-editor.test.js.map +1 -1
- package/dist/src/dao-space/propose-add-member.d.ts +1 -20
- package/dist/src/dao-space/propose-add-member.d.ts.map +1 -1
- package/dist/src/dao-space/propose-add-member.js +12 -87
- package/dist/src/dao-space/propose-add-member.js.map +1 -1
- package/dist/src/dao-space/propose-add-member.test.js +13 -0
- package/dist/src/dao-space/propose-add-member.test.js.map +1 -1
- package/dist/src/dao-space/propose-edit.test.js +45 -0
- package/dist/src/dao-space/propose-edit.test.js.map +1 -1
- package/dist/src/dao-space/propose-remove-editor.d.ts +1 -22
- package/dist/src/dao-space/propose-remove-editor.d.ts.map +1 -1
- package/dist/src/dao-space/propose-remove-editor.js +12 -94
- package/dist/src/dao-space/propose-remove-editor.js.map +1 -1
- package/dist/src/dao-space/propose-remove-editor.test.js +22 -4
- package/dist/src/dao-space/propose-remove-editor.test.js.map +1 -1
- package/dist/src/dao-space/propose-remove-member.d.ts +1 -22
- package/dist/src/dao-space/propose-remove-member.d.ts.map +1 -1
- package/dist/src/dao-space/propose-remove-member.js +12 -94
- package/dist/src/dao-space/propose-remove-member.js.map +1 -1
- package/dist/src/dao-space/propose-remove-member.test.js +19 -0
- package/dist/src/dao-space/propose-remove-member.test.js.map +1 -1
- package/dist/src/dao-space/types.d.ts +72 -11
- 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 +54 -0
- package/dist/src/dao-space/vote-proposal.test.js.map +1 -1
- package/dist/src/e2e-test-environment.d.ts +26 -0
- package/dist/src/e2e-test-environment.d.ts.map +1 -0
- package/dist/src/e2e-test-environment.js +150 -0
- package/dist/src/e2e-test-environment.js.map +1 -0
- package/dist/src/encodings/get-create-dao-space-calldata.d.ts +32 -9
- package/dist/src/encodings/get-create-dao-space-calldata.d.ts.map +1 -1
- package/dist/src/encodings/get-create-dao-space-calldata.js +63 -16
- package/dist/src/encodings/get-create-dao-space-calldata.js.map +1 -1
- package/dist/src/encodings/get-create-dao-space-calldata.test.js +90 -23
- package/dist/src/encodings/get-create-dao-space-calldata.test.js.map +1 -1
- package/dist/src/full-flow-test.test.js +5 -2
- package/dist/src/full-flow-test.test.js.map +1 -1
- package/dist/src/legacy-api-surface.e2e.test.d.ts +2 -0
- package/dist/src/legacy-api-surface.e2e.test.d.ts.map +1 -0
- package/dist/src/{e2e-legacy-api-surface.test.js → legacy-api-surface.e2e.test.js} +91 -71
- package/dist/src/legacy-api-surface.e2e.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 +4 -3
- package/dist/src/personal-space/create-space.js.map +1 -1
- package/dist/src/personal-space/types.d.ts +4 -1
- package/dist/src/personal-space/types.d.ts.map +1 -1
- package/package.json +3 -2
- package/dist/proto.d.ts +0 -5
- package/dist/proto.d.ts.map +0 -1
- package/dist/proto.js +0 -5
- package/dist/proto.js.map +0 -1
- package/dist/src/client/proposals.d.ts +0 -185
- package/dist/src/client/proposals.d.ts.map +0 -1
- package/dist/src/client/proposals.js +0 -294
- package/dist/src/client/proposals.js.map +0 -1
- package/dist/src/client/proposals.test.d.ts +0 -2
- package/dist/src/client/proposals.test.d.ts.map +0 -1
- package/dist/src/client/proposals.test.js +0 -243
- package/dist/src/client/proposals.test.js.map +0 -1
- package/dist/src/contracts-v2/abis.d.ts +0 -196
- package/dist/src/contracts-v2/abis.d.ts.map +0 -1
- package/dist/src/contracts-v2/abis.js +0 -110
- package/dist/src/contracts-v2/abis.js.map +0 -1
- package/dist/src/contracts-v2/actions.d.ts +0 -56
- package/dist/src/contracts-v2/actions.d.ts.map +0 -1
- package/dist/src/contracts-v2/actions.js +0 -83
- package/dist/src/contracts-v2/actions.js.map +0 -1
- package/dist/src/contracts-v2/encoding.d.ts +0 -80
- package/dist/src/contracts-v2/encoding.d.ts.map +0 -1
- package/dist/src/contracts-v2/encoding.js +0 -193
- package/dist/src/contracts-v2/encoding.js.map +0 -1
- package/dist/src/contracts-v2/encoding.test.d.ts +0 -2
- package/dist/src/contracts-v2/encoding.test.d.ts.map +0 -1
- package/dist/src/contracts-v2/encoding.test.js +0 -93
- package/dist/src/contracts-v2/encoding.test.js.map +0 -1
- package/dist/src/contracts-v2/voting-settings.d.ts +0 -48
- package/dist/src/contracts-v2/voting-settings.d.ts.map +0 -1
- package/dist/src/contracts-v2/voting-settings.js +0 -69
- package/dist/src/contracts-v2/voting-settings.js.map +0 -1
- package/dist/src/e2e/local-geobrowser.d.ts +0 -9
- package/dist/src/e2e/local-geobrowser.d.ts.map +0 -1
- package/dist/src/e2e/local-geobrowser.js +0 -35
- package/dist/src/e2e/local-geobrowser.js.map +0 -1
- package/dist/src/e2e/v2-contracts.test.d.ts +0 -2
- package/dist/src/e2e/v2-contracts.test.d.ts.map +0 -1
- package/dist/src/e2e/v2-contracts.test.js +0 -25
- package/dist/src/e2e/v2-contracts.test.js.map +0 -1
- package/dist/src/e2e-api-surface.test.d.ts +0 -2
- package/dist/src/e2e-api-surface.test.d.ts.map +0 -1
- package/dist/src/e2e-api-surface.test.js.map +0 -1
- package/dist/src/e2e-flows.test.d.ts +0 -2
- package/dist/src/e2e-flows.test.d.ts.map +0 -1
- package/dist/src/e2e-flows.test.js +0 -445
- package/dist/src/e2e-flows.test.js.map +0 -1
- package/dist/src/e2e-legacy-api-surface.test.d.ts +0 -2
- package/dist/src/e2e-legacy-api-surface.test.d.ts.map +0 -1
- package/dist/src/e2e-legacy-api-surface.test.js.map +0 -1
- package/dist/src/graph/create-space.d.ts +0 -37
- package/dist/src/graph/create-space.d.ts.map +0 -1
- package/dist/src/graph/create-space.js +0 -67
- package/dist/src/graph/create-space.js.map +0 -1
- package/dist/src/ops/images.d.ts +0 -37
- package/dist/src/ops/images.d.ts.map +0 -1
- package/dist/src/ops/images.js +0 -69
- package/dist/src/ops/images.js.map +0 -1
- package/dist/src/proto/index.d.ts +0 -7
- package/dist/src/proto/index.d.ts.map +0 -1
- package/dist/src/proto/index.js +0 -7
- package/dist/src/proto/index.js.map +0 -1
|
@@ -2,28 +2,7 @@ import type { ProposeRemoveEditorParams, ProposeRemoveEditorResult } from './typ
|
|
|
2
2
|
/**
|
|
3
3
|
* Creates a proposal to remove an editor from a DAO space.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
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
|
-
* ```
|
|
5
|
+
* @deprecated Use `createGeoClient({ network }).daoSpaces.proposeRemoveEditor(...)`.
|
|
27
6
|
*/
|
|
28
7
|
export declare function proposeRemoveEditor(params: ProposeRemoveEditorParams): ProposeRemoveEditorResult;
|
|
29
8
|
//# 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":"AAGA,OAAO,KAAK,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,yBAAyB,GAAG,yBAAyB,CAehG"}
|
|
@@ -1,104 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { bytes16ToBytes32LeftAligned, EMPTY_SIGNATURE, ensure0xPrefix, getContractAddressesBasedOnNetwork, isBytes16Hex, PROPOSAL_CREATED_ACTION, } from './constants.js';
|
|
1
|
+
import { createGeoClient } from '../client.js';
|
|
2
|
+
import { resolveGeoNetwork } from '../networks.js';
|
|
3
|
+
import { ensure0xPrefix, isBytes16Hex } from './constants.js';
|
|
5
4
|
/**
|
|
6
5
|
* Creates a proposal to remove an editor from a DAO space.
|
|
7
6
|
*
|
|
8
|
-
*
|
|
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
|
-
* ```
|
|
7
|
+
* @deprecated Use `createGeoClient({ network }).daoSpaces.proposeRemoveEditor(...)`.
|
|
30
8
|
*/
|
|
31
9
|
export function proposeRemoveEditor(params) {
|
|
32
|
-
const {
|
|
33
|
-
|
|
34
|
-
|
|
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}`);
|
|
10
|
+
const { network = 'TESTNET', ...args } = params;
|
|
11
|
+
if (!isBytes16Hex(ensure0xPrefix(args.authorSpaceId))) {
|
|
12
|
+
throw new Error(`authorSpaceId must be bytes16 hex (32 hex chars). Received: ${args.authorSpaceId}`);
|
|
43
13
|
}
|
|
44
|
-
if (!isBytes16Hex(
|
|
45
|
-
throw new Error(`
|
|
14
|
+
if (!isBytes16Hex(ensure0xPrefix(args.spaceId))) {
|
|
15
|
+
throw new Error(`spaceId must be bytes16 hex (32 hex chars). Received: ${args.spaceId}`);
|
|
46
16
|
}
|
|
47
|
-
|
|
48
|
-
|
|
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}`);
|
|
17
|
+
if (!isBytes16Hex(ensure0xPrefix(args.editorToRemoveSpaceId))) {
|
|
18
|
+
throw new Error(`editorToRemoveSpaceId must be bytes16 hex (32 hex chars). Received: ${args.editorToRemoveSpaceId}`);
|
|
53
19
|
}
|
|
54
|
-
|
|
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
|
-
};
|
|
20
|
+
return createGeoClient({ network: resolveGeoNetwork(network) }).daoSpaces.proposeRemoveEditor(args);
|
|
103
21
|
}
|
|
104
22
|
//# 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":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9D;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAiC;IACnE,MAAM,EAAE,OAAO,GAAG,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;IAChD,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,+DAA+D,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IACvG,CAAC;IACD,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,yDAAyD,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CACb,uEAAuE,IAAI,CAAC,qBAAqB,EAAE,CACpG,CAAC;IACJ,CAAC;IAED,OAAO,eAAe,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACtG,CAAC"}
|
|
@@ -6,11 +6,13 @@ describe('proposeRemoveEditor', () => {
|
|
|
6
6
|
// Valid test values
|
|
7
7
|
const validAuthorSpaceId = '0x0eed5491b917cf58b33ac81255fe7ae9';
|
|
8
8
|
const validSpaceId = '0xabcdef12345678901234567890abcdef';
|
|
9
|
+
const validDaoSpaceAddress = '0x1234567890123456789012345678901234567890';
|
|
9
10
|
const validEditorToRemove = '0x11111111111111111111111111111111';
|
|
10
11
|
it('should return correct structure', () => {
|
|
11
12
|
const result = proposeRemoveEditor({
|
|
12
13
|
authorSpaceId: validAuthorSpaceId,
|
|
13
14
|
spaceId: validSpaceId,
|
|
15
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
14
16
|
editorToRemoveSpaceId: validEditorToRemove,
|
|
15
17
|
});
|
|
16
18
|
expect(result).toHaveProperty('to');
|
|
@@ -21,6 +23,7 @@ describe('proposeRemoveEditor', () => {
|
|
|
21
23
|
const { to } = proposeRemoveEditor({
|
|
22
24
|
authorSpaceId: validAuthorSpaceId,
|
|
23
25
|
spaceId: validSpaceId,
|
|
26
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
24
27
|
editorToRemoveSpaceId: validEditorToRemove,
|
|
25
28
|
});
|
|
26
29
|
expect(to).toBe(TESTNET.SPACE_REGISTRY_ADDRESS);
|
|
@@ -29,6 +32,7 @@ describe('proposeRemoveEditor', () => {
|
|
|
29
32
|
const { calldata } = proposeRemoveEditor({
|
|
30
33
|
authorSpaceId: validAuthorSpaceId,
|
|
31
34
|
spaceId: validSpaceId,
|
|
35
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
32
36
|
editorToRemoveSpaceId: validEditorToRemove,
|
|
33
37
|
});
|
|
34
38
|
expect(calldata).toBeTypeOf('string');
|
|
@@ -38,6 +42,7 @@ describe('proposeRemoveEditor', () => {
|
|
|
38
42
|
const { proposalId } = proposeRemoveEditor({
|
|
39
43
|
authorSpaceId: validAuthorSpaceId,
|
|
40
44
|
spaceId: validSpaceId,
|
|
45
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
41
46
|
editorToRemoveSpaceId: validEditorToRemove,
|
|
42
47
|
});
|
|
43
48
|
expect(proposalId).toMatch(BYTES16_HEX_REGEX);
|
|
@@ -47,6 +52,7 @@ describe('proposeRemoveEditor', () => {
|
|
|
47
52
|
const { proposalId } = proposeRemoveEditor({
|
|
48
53
|
authorSpaceId: validAuthorSpaceId,
|
|
49
54
|
spaceId: validSpaceId,
|
|
55
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
50
56
|
editorToRemoveSpaceId: validEditorToRemove,
|
|
51
57
|
proposalId: customProposalId,
|
|
52
58
|
});
|
|
@@ -56,23 +62,25 @@ describe('proposeRemoveEditor', () => {
|
|
|
56
62
|
const result = proposeRemoveEditor({
|
|
57
63
|
authorSpaceId: validAuthorSpaceId,
|
|
58
64
|
spaceId: validSpaceId,
|
|
65
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
59
66
|
editorToRemoveSpaceId: validEditorToRemove,
|
|
60
67
|
});
|
|
61
68
|
expect(result.calldata).toBeTruthy();
|
|
62
69
|
});
|
|
63
|
-
it('should
|
|
64
|
-
|
|
70
|
+
it('should reject FAST voting mode', () => {
|
|
71
|
+
expect(() => proposeRemoveEditor({
|
|
65
72
|
authorSpaceId: validAuthorSpaceId,
|
|
66
73
|
spaceId: validSpaceId,
|
|
74
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
67
75
|
editorToRemoveSpaceId: validEditorToRemove,
|
|
68
76
|
votingMode: 'FAST',
|
|
69
|
-
});
|
|
70
|
-
expect(result.calldata).toBeTruthy();
|
|
77
|
+
})).toThrow('proposeRemoveEditor only supports SLOW voting mode');
|
|
71
78
|
});
|
|
72
79
|
it('should accept explicit SLOW voting mode', () => {
|
|
73
80
|
const params = {
|
|
74
81
|
authorSpaceId: validAuthorSpaceId,
|
|
75
82
|
spaceId: validSpaceId,
|
|
83
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
76
84
|
editorToRemoveSpaceId: validEditorToRemove,
|
|
77
85
|
};
|
|
78
86
|
const slowResult = proposeRemoveEditor({ ...params, votingMode: 'SLOW' });
|
|
@@ -84,12 +92,14 @@ describe('proposeRemoveEditor', () => {
|
|
|
84
92
|
const result1 = proposeRemoveEditor({
|
|
85
93
|
authorSpaceId: validAuthorSpaceId,
|
|
86
94
|
spaceId: validSpaceId,
|
|
95
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
87
96
|
editorToRemoveSpaceId: validEditorToRemove,
|
|
88
97
|
proposalId: sharedProposalId,
|
|
89
98
|
});
|
|
90
99
|
const result2 = proposeRemoveEditor({
|
|
91
100
|
authorSpaceId: validAuthorSpaceId,
|
|
92
101
|
spaceId: validSpaceId,
|
|
102
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
93
103
|
editorToRemoveSpaceId: otherEditor,
|
|
94
104
|
proposalId: sharedProposalId,
|
|
95
105
|
});
|
|
@@ -99,6 +109,7 @@ describe('proposeRemoveEditor', () => {
|
|
|
99
109
|
const result = proposeRemoveEditor({
|
|
100
110
|
authorSpaceId: '0eed5491b917cf58b33ac81255fe7ae9',
|
|
101
111
|
spaceId: 'abcdef12345678901234567890abcdef',
|
|
112
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
102
113
|
editorToRemoveSpaceId: '11111111111111111111111111111111',
|
|
103
114
|
});
|
|
104
115
|
expect(result.calldata).toBeTruthy();
|
|
@@ -108,12 +119,14 @@ describe('proposeRemoveEditor', () => {
|
|
|
108
119
|
const withPrefix = proposeRemoveEditor({
|
|
109
120
|
authorSpaceId: '0x0eed5491b917cf58b33ac81255fe7ae9',
|
|
110
121
|
spaceId: '0xabcdef12345678901234567890abcdef',
|
|
122
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
111
123
|
editorToRemoveSpaceId: '0x11111111111111111111111111111111',
|
|
112
124
|
proposalId,
|
|
113
125
|
});
|
|
114
126
|
const withoutPrefix = proposeRemoveEditor({
|
|
115
127
|
authorSpaceId: '0eed5491b917cf58b33ac81255fe7ae9',
|
|
116
128
|
spaceId: 'abcdef12345678901234567890abcdef',
|
|
129
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
117
130
|
editorToRemoveSpaceId: '11111111111111111111111111111111',
|
|
118
131
|
proposalId,
|
|
119
132
|
});
|
|
@@ -123,6 +136,7 @@ describe('proposeRemoveEditor', () => {
|
|
|
123
136
|
const params = {
|
|
124
137
|
authorSpaceId: validAuthorSpaceId,
|
|
125
138
|
spaceId: validSpaceId,
|
|
139
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
126
140
|
editorToRemoveSpaceId: validEditorToRemove,
|
|
127
141
|
};
|
|
128
142
|
const result1 = proposeRemoveEditor(params);
|
|
@@ -133,6 +147,7 @@ describe('proposeRemoveEditor', () => {
|
|
|
133
147
|
expect(() => proposeRemoveEditor({
|
|
134
148
|
authorSpaceId: 'invalid',
|
|
135
149
|
spaceId: validSpaceId,
|
|
150
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
136
151
|
editorToRemoveSpaceId: validEditorToRemove,
|
|
137
152
|
})).toThrow('authorSpaceId must be bytes16 hex');
|
|
138
153
|
});
|
|
@@ -140,6 +155,7 @@ describe('proposeRemoveEditor', () => {
|
|
|
140
155
|
expect(() => proposeRemoveEditor({
|
|
141
156
|
authorSpaceId: validAuthorSpaceId,
|
|
142
157
|
spaceId: 'tooshort',
|
|
158
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
143
159
|
editorToRemoveSpaceId: validEditorToRemove,
|
|
144
160
|
})).toThrow('spaceId must be bytes16 hex');
|
|
145
161
|
});
|
|
@@ -147,6 +163,7 @@ describe('proposeRemoveEditor', () => {
|
|
|
147
163
|
expect(() => proposeRemoveEditor({
|
|
148
164
|
authorSpaceId: validAuthorSpaceId,
|
|
149
165
|
spaceId: validSpaceId,
|
|
166
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
150
167
|
editorToRemoveSpaceId: 'badid',
|
|
151
168
|
})).toThrow('editorToRemoveSpaceId must be bytes16 hex');
|
|
152
169
|
});
|
|
@@ -154,6 +171,7 @@ describe('proposeRemoveEditor', () => {
|
|
|
154
171
|
expect(() => proposeRemoveEditor({
|
|
155
172
|
authorSpaceId: validAuthorSpaceId,
|
|
156
173
|
spaceId: validSpaceId,
|
|
174
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
157
175
|
editorToRemoveSpaceId: validEditorToRemove,
|
|
158
176
|
proposalId: 'badproposalid',
|
|
159
177
|
})).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,28 +2,7 @@ import type { ProposeRemoveMemberParams, ProposeRemoveMemberResult } from './typ
|
|
|
2
2
|
/**
|
|
3
3
|
* Creates a proposal to remove a member from a DAO space.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
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
|
-
* ```
|
|
5
|
+
* @deprecated Use `createGeoClient({ network }).daoSpaces.proposeRemoveMember(...)`.
|
|
27
6
|
*/
|
|
28
7
|
export declare function proposeRemoveMember(params: ProposeRemoveMemberParams): ProposeRemoveMemberResult;
|
|
29
8
|
//# 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":"AAGA,OAAO,KAAK,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,yBAAyB,GAAG,yBAAyB,CAehG"}
|
|
@@ -1,104 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { bytes16ToBytes32LeftAligned, EMPTY_SIGNATURE, ensure0xPrefix, getContractAddressesBasedOnNetwork, isBytes16Hex, PROPOSAL_CREATED_ACTION, } from './constants.js';
|
|
1
|
+
import { createGeoClient } from '../client.js';
|
|
2
|
+
import { resolveGeoNetwork } from '../networks.js';
|
|
3
|
+
import { ensure0xPrefix, isBytes16Hex } from './constants.js';
|
|
5
4
|
/**
|
|
6
5
|
* Creates a proposal to remove a member from a DAO space.
|
|
7
6
|
*
|
|
8
|
-
*
|
|
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
|
-
* ```
|
|
7
|
+
* @deprecated Use `createGeoClient({ network }).daoSpaces.proposeRemoveMember(...)`.
|
|
30
8
|
*/
|
|
31
9
|
export function proposeRemoveMember(params) {
|
|
32
|
-
const {
|
|
33
|
-
|
|
34
|
-
|
|
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}`);
|
|
10
|
+
const { network = 'TESTNET', ...args } = params;
|
|
11
|
+
if (!isBytes16Hex(ensure0xPrefix(args.authorSpaceId))) {
|
|
12
|
+
throw new Error(`authorSpaceId must be bytes16 hex (32 hex chars). Received: ${args.authorSpaceId}`);
|
|
43
13
|
}
|
|
44
|
-
if (!isBytes16Hex(
|
|
45
|
-
throw new Error(`
|
|
14
|
+
if (!isBytes16Hex(ensure0xPrefix(args.spaceId))) {
|
|
15
|
+
throw new Error(`spaceId must be bytes16 hex (32 hex chars). Received: ${args.spaceId}`);
|
|
46
16
|
}
|
|
47
|
-
|
|
48
|
-
|
|
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}`);
|
|
17
|
+
if (!isBytes16Hex(ensure0xPrefix(args.memberToRemoveSpaceId))) {
|
|
18
|
+
throw new Error(`memberToRemoveSpaceId must be bytes16 hex (32 hex chars). Received: ${args.memberToRemoveSpaceId}`);
|
|
53
19
|
}
|
|
54
|
-
|
|
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
|
-
};
|
|
20
|
+
return createGeoClient({ network: resolveGeoNetwork(network) }).daoSpaces.proposeRemoveMember(args);
|
|
103
21
|
}
|
|
104
22
|
//# 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":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9D;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAiC;IACnE,MAAM,EAAE,OAAO,GAAG,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;IAChD,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,+DAA+D,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IACvG,CAAC;IACD,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,yDAAyD,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CACb,uEAAuE,IAAI,CAAC,qBAAqB,EAAE,CACpG,CAAC;IACJ,CAAC;IAED,OAAO,eAAe,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACtG,CAAC"}
|