/** * pop task folders — org folder-tree root (TaskManager v4+). * * The folder structure itself (names, parents, project assignments) lives * off-chain in IPFS as JSON; only the 32-byte root digest is on-chain. The * subgraph schema documents the encoding: "bytes32 sha256 digest; frontend * prepends 0x1220 and base58-encodes to a CIDv0" — which is exactly what * lib/encoding's bytes32ToIpfsCid/ipfsCidToBytes32 implement. * * setFolders(expectedCurrentRoot, newRoot) is CAS-guarded (verified contracts * origin/main src/TaskManager.sol): if another organizer published first the * call reverts FoldersRootStale(expected, actual). `set` auto-fills the * expected root from chain and, on a stale revert, re-reads and retries ONCE. * Permission: executor or any organizer hat (_requireOrganizer). * * READ vs CAS (2026-07). `show` serves the root from Organization.foldersRoot * (verified populated on live Gnosis: org Test6 = 0x8694f683…, alongside the * foldersUpdatedAt/foldersUpdatedBy provenance this command already queried * before re-reading the same root over RPC). A null there means "no * FoldersUpdated ever indexed", which is not the same as "root is zero", so * null falls back to the on-chain lens. * * `set` deliberately keeps BOTH of its getFoldersRoot calls on RPC. Those are * the CAS expectedCurrentRoot: a stale value does not degrade the display, it * guarantees the transaction reverts FoldersRootStale. That is precisely the * revert the read exists to predict, so it must never come from an index. */ import type { Argv, ArgumentsCamelCase } from 'yargs'; /** * Parse --new-root input: CIDv0 (Qm…), 0x-prefixed bytes32, or "clear". * Deliberately stricter than ipfsCidToBytes32 (which keccaks arbitrary * strings — a silent footgun for a root pointer). */ export declare function parseFoldersRoot(input: string): string; /** Normalise a subgraph bytes32 to the 0x-prefixed lowercase form the lens returns. */ export declare function normalizeRoot(value: string | null | undefined): string | null; interface FoldersShowArgs { org: string; chain?: number; rpc?: string; } declare const foldersShowHandler: { builder: (yargs: Argv) => Argv<{}>; handler: (argv: ArgumentsCamelCase) => Promise; }; interface FoldersSetArgs { org: string; 'new-root': string; chain?: number; rpc?: string; 'private-key'?: string; 'dry-run'?: boolean; yes?: boolean; preflight?: boolean; } declare const foldersSetHandler: { builder: (yargs: Argv) => Argv<{ "new-root": string; }>; handler: (argv: ArgumentsCamelCase) => Promise; }; export declare function registerFoldersCommands(yargs: Argv): Argv<{}>; export { foldersShowHandler, foldersSetHandler };