@poa-box/core 0.1.0 → 1.0.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.
Files changed (95) hide show
  1. package/README.md +2 -0
  2. package/dist/abis/AuthorityRouter.d.ts +448 -0
  3. package/dist/abis/AuthorityRouter.js +584 -0
  4. package/dist/abis/CutoverVerifier.d.ts +194 -0
  5. package/dist/abis/CutoverVerifier.js +259 -0
  6. package/dist/abis/DirectDemocracyVotingNew.d.ts +168 -30
  7. package/dist/abis/DirectDemocracyVotingNew.js +214 -35
  8. package/dist/abis/EducationHubNew.d.ts +32 -75
  9. package/dist/abis/EducationHubNew.js +38 -94
  10. package/dist/abis/Executor.d.ts +56 -86
  11. package/dist/abis/Executor.js +68 -104
  12. package/dist/abis/HybridVotingNew.d.ts +279 -35
  13. package/dist/abis/HybridVotingNew.js +357 -40
  14. package/dist/abis/{EligibilityModuleNew.d.ts → MembershipAuthority.d.ts} +1437 -718
  15. package/dist/abis/{EligibilityModuleNew.js → MembershipAuthority.js} +1821 -899
  16. package/dist/abis/OrgDeployerNew.d.ts +193 -127
  17. package/dist/abis/OrgDeployerNew.js +244 -160
  18. package/dist/abis/OrgRegistry.d.ts +40 -0
  19. package/dist/abis/OrgRegistry.js +51 -0
  20. package/dist/abis/ParticipationToken.d.ts +32 -75
  21. package/dist/abis/ParticipationToken.js +38 -94
  22. package/dist/abis/PasskeyAccount.d.ts +28 -0
  23. package/dist/abis/PasskeyAccount.js +35 -0
  24. package/dist/abis/PaymasterHub.d.ts +527 -47
  25. package/dist/abis/PaymasterHub.js +750 -135
  26. package/dist/abis/QuickJoinNew.d.ts +59 -170
  27. package/dist/abis/QuickJoinNew.js +71 -215
  28. package/dist/abis/TaskManagerNew.d.ts +27 -44
  29. package/dist/abis/TaskManagerNew.js +31 -52
  30. package/dist/abis/UniversalAccountRegistry.d.ts +24 -0
  31. package/dist/abis/UniversalAccountRegistry.js +30 -0
  32. package/dist/abis/ZkEmailInvites.d.ts +44 -0
  33. package/dist/abis/ZkEmailInvites.js +55 -0
  34. package/dist/abis/index.d.ts +6 -4
  35. package/dist/abis/index.js +10 -7
  36. package/dist/chains.js +3 -3
  37. package/dist/error-catalog.js +125 -7
  38. package/dist/graph/documents/activity.d.ts +3 -1
  39. package/dist/graph/documents/activity.js +19 -14
  40. package/dist/graph/documents/org.d.ts +4 -4
  41. package/dist/graph/documents/org.js +10 -4
  42. package/dist/graph/documents/task.d.ts +10 -1
  43. package/dist/graph/documents/task.js +157 -3
  44. package/dist/graph/documents/user.d.ts +5 -30
  45. package/dist/graph/documents/user.js +2 -42
  46. package/dist/graph/documents/voting-classes.d.ts +23 -2
  47. package/dist/graph/documents/voting-classes.js +119 -10
  48. package/dist/metadata/index.d.ts +0 -1
  49. package/dist/metadata/index.js +1 -2
  50. package/dist/perms.d.ts +0 -15
  51. package/dist/perms.js +1 -21
  52. package/dist/preflight.d.ts +2 -2
  53. package/dist/preflight.js +14 -22
  54. package/dist/reads/authority.d.ts +33 -0
  55. package/dist/reads/authority.js +196 -0
  56. package/dist/reads/index.d.ts +1 -1
  57. package/dist/reads/index.js +2 -2
  58. package/dist/reads/org.d.ts +20 -20
  59. package/dist/reads/org.js +94 -28
  60. package/dist/reads/project.js +3 -3
  61. package/dist/reads/resolve.d.ts +1 -1
  62. package/dist/reads/resolve.js +12 -3
  63. package/dist/reads/task.d.ts +44 -22
  64. package/dist/reads/task.js +126 -67
  65. package/dist/reads/user.d.ts +8 -43
  66. package/dist/reads/user.js +27 -44
  67. package/dist/reads/vote.d.ts +26 -2
  68. package/dist/reads/vote.js +104 -23
  69. package/dist/tx/authority.d.ts +33 -0
  70. package/dist/tx/authority.js +62 -0
  71. package/dist/tx/governance.d.ts +6 -0
  72. package/dist/tx/governance.js +20 -2
  73. package/dist/tx/index.d.ts +1 -1
  74. package/dist/tx/index.js +2 -2
  75. package/dist/tx/org.d.ts +23 -18
  76. package/dist/tx/org.js +203 -67
  77. package/dist/tx/project.d.ts +3 -2
  78. package/dist/tx/project.js +28 -10
  79. package/dist/tx/task.d.ts +13 -24
  80. package/dist/tx/task.js +45 -85
  81. package/dist/tx/user.d.ts +2 -40
  82. package/dist/tx/user.js +2 -76
  83. package/dist/tx/vote.d.ts +5 -0
  84. package/dist/tx/vote.js +54 -43
  85. package/dist/version.d.ts +0 -5
  86. package/dist/version.js +1 -13
  87. package/package.json +1 -1
  88. package/dist/abis/ToggleModule.d.ts +0 -193
  89. package/dist/abis/ToggleModule.js +0 -255
  90. package/dist/metadata/role.d.ts +0 -38
  91. package/dist/metadata/role.js +0 -35
  92. package/dist/reads/eligibility.d.ts +0 -377
  93. package/dist/reads/eligibility.js +0 -687
  94. package/dist/tx/eligibility.d.ts +0 -511
  95. package/dist/tx/eligibility.js +0 -818
@@ -573,5 +573,29 @@ export declare const UniversalAccountRegistryAbi: readonly [{
573
573
  readonly type: "error";
574
574
  readonly name: "UsernameTooLong";
575
575
  readonly inputs: readonly [];
576
+ }, {
577
+ readonly type: "error";
578
+ readonly name: "AuthDataTooShort";
579
+ readonly inputs: readonly [];
580
+ }, {
581
+ readonly type: "error";
582
+ readonly name: "ChallengeMismatch";
583
+ readonly inputs: readonly [];
584
+ }, {
585
+ readonly type: "error";
586
+ readonly name: "InvalidWebAuthnSignature";
587
+ readonly inputs: readonly [];
588
+ }, {
589
+ readonly type: "error";
590
+ readonly name: "MalformedClientData";
591
+ readonly inputs: readonly [];
592
+ }, {
593
+ readonly type: "error";
594
+ readonly name: "SignCountTooLow";
595
+ readonly inputs: readonly [];
596
+ }, {
597
+ readonly type: "error";
598
+ readonly name: "UserNotPresent";
599
+ readonly inputs: readonly [];
576
600
  }];
577
601
  export default UniversalAccountRegistryAbi;
@@ -745,6 +745,36 @@ exports.UniversalAccountRegistryAbi = [
745
745
  "type": "error",
746
746
  "name": "UsernameTooLong",
747
747
  "inputs": []
748
+ },
749
+ {
750
+ "type": "error",
751
+ "name": "AuthDataTooShort",
752
+ "inputs": []
753
+ },
754
+ {
755
+ "type": "error",
756
+ "name": "ChallengeMismatch",
757
+ "inputs": []
758
+ },
759
+ {
760
+ "type": "error",
761
+ "name": "InvalidWebAuthnSignature",
762
+ "inputs": []
763
+ },
764
+ {
765
+ "type": "error",
766
+ "name": "MalformedClientData",
767
+ "inputs": []
768
+ },
769
+ {
770
+ "type": "error",
771
+ "name": "SignCountTooLow",
772
+ "inputs": []
773
+ },
774
+ {
775
+ "type": "error",
776
+ "name": "UserNotPresent",
777
+ "inputs": []
748
778
  }
749
779
  ];
750
780
  exports.default = exports.UniversalAccountRegistryAbi;
@@ -819,5 +819,49 @@ export declare const ZkEmailInvitesAbi: readonly [{
819
819
  readonly type: "error";
820
820
  readonly name: "ZeroClaimer";
821
821
  readonly inputs: readonly [];
822
+ }, {
823
+ readonly type: "error";
824
+ readonly name: "CapBelowCommitted";
825
+ readonly inputs: readonly [];
826
+ }, {
827
+ readonly type: "error";
828
+ readonly name: "EmptyTitle";
829
+ readonly inputs: readonly [];
830
+ }, {
831
+ readonly type: "error";
832
+ readonly name: "InvalidPayout";
833
+ readonly inputs: readonly [];
834
+ }, {
835
+ readonly type: "error";
836
+ readonly name: "InvalidString";
837
+ readonly inputs: readonly [];
838
+ }, {
839
+ readonly type: "error";
840
+ readonly name: "TitleTooLong";
841
+ readonly inputs: readonly [];
842
+ }, {
843
+ readonly type: "error";
844
+ readonly name: "AuthDataTooShort";
845
+ readonly inputs: readonly [];
846
+ }, {
847
+ readonly type: "error";
848
+ readonly name: "ChallengeMismatch";
849
+ readonly inputs: readonly [];
850
+ }, {
851
+ readonly type: "error";
852
+ readonly name: "InvalidWebAuthnSignature";
853
+ readonly inputs: readonly [];
854
+ }, {
855
+ readonly type: "error";
856
+ readonly name: "MalformedClientData";
857
+ readonly inputs: readonly [];
858
+ }, {
859
+ readonly type: "error";
860
+ readonly name: "SignCountTooLow";
861
+ readonly inputs: readonly [];
862
+ }, {
863
+ readonly type: "error";
864
+ readonly name: "UserNotPresent";
865
+ readonly inputs: readonly [];
822
866
  }];
823
867
  export default ZkEmailInvitesAbi;
@@ -1055,6 +1055,61 @@ exports.ZkEmailInvitesAbi = [
1055
1055
  "type": "error",
1056
1056
  "name": "ZeroClaimer",
1057
1057
  "inputs": []
1058
+ },
1059
+ {
1060
+ "type": "error",
1061
+ "name": "CapBelowCommitted",
1062
+ "inputs": []
1063
+ },
1064
+ {
1065
+ "type": "error",
1066
+ "name": "EmptyTitle",
1067
+ "inputs": []
1068
+ },
1069
+ {
1070
+ "type": "error",
1071
+ "name": "InvalidPayout",
1072
+ "inputs": []
1073
+ },
1074
+ {
1075
+ "type": "error",
1076
+ "name": "InvalidString",
1077
+ "inputs": []
1078
+ },
1079
+ {
1080
+ "type": "error",
1081
+ "name": "TitleTooLong",
1082
+ "inputs": []
1083
+ },
1084
+ {
1085
+ "type": "error",
1086
+ "name": "AuthDataTooShort",
1087
+ "inputs": []
1088
+ },
1089
+ {
1090
+ "type": "error",
1091
+ "name": "ChallengeMismatch",
1092
+ "inputs": []
1093
+ },
1094
+ {
1095
+ "type": "error",
1096
+ "name": "InvalidWebAuthnSignature",
1097
+ "inputs": []
1098
+ },
1099
+ {
1100
+ "type": "error",
1101
+ "name": "MalformedClientData",
1102
+ "inputs": []
1103
+ },
1104
+ {
1105
+ "type": "error",
1106
+ "name": "SignCountTooLow",
1107
+ "inputs": []
1108
+ },
1109
+ {
1110
+ "type": "error",
1111
+ "name": "UserNotPresent",
1112
+ "inputs": []
1058
1113
  }
1059
1114
  ];
1060
1115
  exports.default = exports.ZkEmailInvitesAbi;
@@ -1,10 +1,12 @@
1
+ import { AuthorityRouterAbi } from './AuthorityRouter';
2
+ import { CutoverVerifierAbi } from './CutoverVerifier';
1
3
  import { DirectDemocracyVotingNewAbi } from './DirectDemocracyVotingNew';
2
4
  import { ERC20Abi } from './ERC20';
3
5
  import { EducationHubNewAbi } from './EducationHubNew';
4
- import { EligibilityModuleNewAbi } from './EligibilityModuleNew';
5
6
  import { ExecutorAbi } from './Executor';
6
7
  import { HybridVotingNewAbi } from './HybridVotingNew';
7
8
  import { ImplementationRegistryAbi } from './ImplementationRegistry';
9
+ import { MembershipAuthorityAbi } from './MembershipAuthority';
8
10
  import { OrgDeployerNewAbi } from './OrgDeployerNew';
9
11
  import { OrgRegistryAbi } from './OrgRegistry';
10
12
  import { ParticipationTokenAbi } from './ParticipationToken';
@@ -15,7 +17,6 @@ import { PaymentManagerAbi } from './PaymentManager';
15
17
  import { PoaManagerAbi } from './PoaManager';
16
18
  import { QuickJoinNewAbi } from './QuickJoinNew';
17
19
  import { TaskManagerNewAbi } from './TaskManagerNew';
18
- import { ToggleModuleAbi } from './ToggleModule';
19
20
  import { UniversalAccountRegistryAbi } from './UniversalAccountRegistry';
20
21
  import { ZkEmailInvitesAbi } from './ZkEmailInvites';
21
22
  import { AaveGovernanceV2Abi } from './external/AaveGovernanceV2';
@@ -27,13 +28,15 @@ import { GovernorAlphaAbi } from './external/GovernorAlpha';
27
28
  import { MakerDAOChiefAbi } from './external/MakerDAOChief';
28
29
  import { OZGovernorAbi } from './external/OZGovernor';
29
30
  import { SolidlyVotingEscrowAbi } from './external/SolidlyVotingEscrow';
31
+ export { AuthorityRouterAbi };
32
+ export { CutoverVerifierAbi };
30
33
  export { DirectDemocracyVotingNewAbi };
31
34
  export { ERC20Abi };
32
35
  export { EducationHubNewAbi };
33
- export { EligibilityModuleNewAbi };
34
36
  export { ExecutorAbi };
35
37
  export { HybridVotingNewAbi };
36
38
  export { ImplementationRegistryAbi };
39
+ export { MembershipAuthorityAbi };
37
40
  export { OrgDeployerNewAbi };
38
41
  export { OrgRegistryAbi };
39
42
  export { ParticipationTokenAbi };
@@ -44,7 +47,6 @@ export { PaymentManagerAbi };
44
47
  export { PoaManagerAbi };
45
48
  export { QuickJoinNewAbi };
46
49
  export { TaskManagerNewAbi };
47
- export { ToggleModuleAbi };
48
50
  export { UniversalAccountRegistryAbi };
49
51
  export { ZkEmailInvitesAbi };
50
52
  export { AaveGovernanceV2Abi };
@@ -2,21 +2,25 @@
2
2
  // GENERATED by packages/core/scripts/gen-abis.mjs — do not edit.
3
3
  // Source of truth: src/abi/*.json at the repo root (see scripts/extract-abis.mjs).
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.EXTERNAL_ABIS = exports.ALL_ABIS = exports.SolidlyVotingEscrowAbi = exports.OZGovernorAbi = exports.MakerDAOChiefAbi = exports.GovernorAlphaAbi = exports.CurveVotingEscrowAbi = exports.CurveGaugeControllerAbi = exports.AragonVotingAbi = exports.AaveGovernanceV3Abi = exports.AaveGovernanceV2Abi = exports.ZkEmailInvitesAbi = exports.UniversalAccountRegistryAbi = exports.ToggleModuleAbi = exports.TaskManagerNewAbi = exports.QuickJoinNewAbi = exports.PoaManagerAbi = exports.PaymentManagerAbi = exports.PaymasterHubAbi = exports.PasskeyAccountFactoryAbi = exports.PasskeyAccountAbi = exports.ParticipationTokenAbi = exports.OrgRegistryAbi = exports.OrgDeployerNewAbi = exports.ImplementationRegistryAbi = exports.HybridVotingNewAbi = exports.ExecutorAbi = exports.EligibilityModuleNewAbi = exports.EducationHubNewAbi = exports.ERC20Abi = exports.DirectDemocracyVotingNewAbi = void 0;
5
+ exports.EXTERNAL_ABIS = exports.ALL_ABIS = exports.SolidlyVotingEscrowAbi = exports.OZGovernorAbi = exports.MakerDAOChiefAbi = exports.GovernorAlphaAbi = exports.CurveVotingEscrowAbi = exports.CurveGaugeControllerAbi = exports.AragonVotingAbi = exports.AaveGovernanceV3Abi = exports.AaveGovernanceV2Abi = exports.ZkEmailInvitesAbi = exports.UniversalAccountRegistryAbi = exports.TaskManagerNewAbi = exports.QuickJoinNewAbi = exports.PoaManagerAbi = exports.PaymentManagerAbi = exports.PaymasterHubAbi = exports.PasskeyAccountFactoryAbi = exports.PasskeyAccountAbi = exports.ParticipationTokenAbi = exports.OrgRegistryAbi = exports.OrgDeployerNewAbi = exports.MembershipAuthorityAbi = exports.ImplementationRegistryAbi = exports.HybridVotingNewAbi = exports.ExecutorAbi = exports.EducationHubNewAbi = exports.ERC20Abi = exports.DirectDemocracyVotingNewAbi = exports.CutoverVerifierAbi = exports.AuthorityRouterAbi = void 0;
6
+ const AuthorityRouter_1 = require("./AuthorityRouter");
7
+ Object.defineProperty(exports, "AuthorityRouterAbi", { enumerable: true, get: function () { return AuthorityRouter_1.AuthorityRouterAbi; } });
8
+ const CutoverVerifier_1 = require("./CutoverVerifier");
9
+ Object.defineProperty(exports, "CutoverVerifierAbi", { enumerable: true, get: function () { return CutoverVerifier_1.CutoverVerifierAbi; } });
6
10
  const DirectDemocracyVotingNew_1 = require("./DirectDemocracyVotingNew");
7
11
  Object.defineProperty(exports, "DirectDemocracyVotingNewAbi", { enumerable: true, get: function () { return DirectDemocracyVotingNew_1.DirectDemocracyVotingNewAbi; } });
8
12
  const ERC20_1 = require("./ERC20");
9
13
  Object.defineProperty(exports, "ERC20Abi", { enumerable: true, get: function () { return ERC20_1.ERC20Abi; } });
10
14
  const EducationHubNew_1 = require("./EducationHubNew");
11
15
  Object.defineProperty(exports, "EducationHubNewAbi", { enumerable: true, get: function () { return EducationHubNew_1.EducationHubNewAbi; } });
12
- const EligibilityModuleNew_1 = require("./EligibilityModuleNew");
13
- Object.defineProperty(exports, "EligibilityModuleNewAbi", { enumerable: true, get: function () { return EligibilityModuleNew_1.EligibilityModuleNewAbi; } });
14
16
  const Executor_1 = require("./Executor");
15
17
  Object.defineProperty(exports, "ExecutorAbi", { enumerable: true, get: function () { return Executor_1.ExecutorAbi; } });
16
18
  const HybridVotingNew_1 = require("./HybridVotingNew");
17
19
  Object.defineProperty(exports, "HybridVotingNewAbi", { enumerable: true, get: function () { return HybridVotingNew_1.HybridVotingNewAbi; } });
18
20
  const ImplementationRegistry_1 = require("./ImplementationRegistry");
19
21
  Object.defineProperty(exports, "ImplementationRegistryAbi", { enumerable: true, get: function () { return ImplementationRegistry_1.ImplementationRegistryAbi; } });
22
+ const MembershipAuthority_1 = require("./MembershipAuthority");
23
+ Object.defineProperty(exports, "MembershipAuthorityAbi", { enumerable: true, get: function () { return MembershipAuthority_1.MembershipAuthorityAbi; } });
20
24
  const OrgDeployerNew_1 = require("./OrgDeployerNew");
21
25
  Object.defineProperty(exports, "OrgDeployerNewAbi", { enumerable: true, get: function () { return OrgDeployerNew_1.OrgDeployerNewAbi; } });
22
26
  const OrgRegistry_1 = require("./OrgRegistry");
@@ -37,8 +41,6 @@ const QuickJoinNew_1 = require("./QuickJoinNew");
37
41
  Object.defineProperty(exports, "QuickJoinNewAbi", { enumerable: true, get: function () { return QuickJoinNew_1.QuickJoinNewAbi; } });
38
42
  const TaskManagerNew_1 = require("./TaskManagerNew");
39
43
  Object.defineProperty(exports, "TaskManagerNewAbi", { enumerable: true, get: function () { return TaskManagerNew_1.TaskManagerNewAbi; } });
40
- const ToggleModule_1 = require("./ToggleModule");
41
- Object.defineProperty(exports, "ToggleModuleAbi", { enumerable: true, get: function () { return ToggleModule_1.ToggleModuleAbi; } });
42
44
  const UniversalAccountRegistry_1 = require("./UniversalAccountRegistry");
43
45
  Object.defineProperty(exports, "UniversalAccountRegistryAbi", { enumerable: true, get: function () { return UniversalAccountRegistry_1.UniversalAccountRegistryAbi; } });
44
46
  const ZkEmailInvites_1 = require("./ZkEmailInvites");
@@ -63,13 +65,15 @@ const SolidlyVotingEscrow_1 = require("./external/SolidlyVotingEscrow");
63
65
  Object.defineProperty(exports, "SolidlyVotingEscrowAbi", { enumerable: true, get: function () { return SolidlyVotingEscrow_1.SolidlyVotingEscrowAbi; } });
64
66
  /** Every first-party POP ABI, keyed by its historical abi/ file base name. */
65
67
  exports.ALL_ABIS = {
68
+ "AuthorityRouter": AuthorityRouter_1.AuthorityRouterAbi,
69
+ "CutoverVerifier": CutoverVerifier_1.CutoverVerifierAbi,
66
70
  "DirectDemocracyVotingNew": DirectDemocracyVotingNew_1.DirectDemocracyVotingNewAbi,
67
71
  "ERC20": ERC20_1.ERC20Abi,
68
72
  "EducationHubNew": EducationHubNew_1.EducationHubNewAbi,
69
- "EligibilityModuleNew": EligibilityModuleNew_1.EligibilityModuleNewAbi,
70
73
  "Executor": Executor_1.ExecutorAbi,
71
74
  "HybridVotingNew": HybridVotingNew_1.HybridVotingNewAbi,
72
75
  "ImplementationRegistry": ImplementationRegistry_1.ImplementationRegistryAbi,
76
+ "MembershipAuthority": MembershipAuthority_1.MembershipAuthorityAbi,
73
77
  "OrgDeployerNew": OrgDeployerNew_1.OrgDeployerNewAbi,
74
78
  "OrgRegistry": OrgRegistry_1.OrgRegistryAbi,
75
79
  "ParticipationToken": ParticipationToken_1.ParticipationTokenAbi,
@@ -80,7 +84,6 @@ exports.ALL_ABIS = {
80
84
  "PoaManager": PoaManager_1.PoaManagerAbi,
81
85
  "QuickJoinNew": QuickJoinNew_1.QuickJoinNewAbi,
82
86
  "TaskManagerNew": TaskManagerNew_1.TaskManagerNewAbi,
83
- "ToggleModule": ToggleModule_1.ToggleModuleAbi,
84
87
  "UniversalAccountRegistry": UniversalAccountRegistry_1.UniversalAccountRegistryAbi,
85
88
  "ZkEmailInvites": ZkEmailInvites_1.ZkEmailInvitesAbi,
86
89
  };
package/dist/chains.js CHANGED
@@ -56,9 +56,9 @@ exports.NETWORKS = {
56
56
  blockExplorer: 'https://arbiscan.io',
57
57
  isTestnet: false,
58
58
  subgraphUrl: 'https://api.studio.thegraph.com/query/73367/poa-arb-v-1/version/latest',
59
- // No gatewaySubgraphId: the Arbitrum deployment has not been published to
60
- // the decentralised network (or its ID is not known here), so Arbitrum has
61
- // no paid tier by default. Set POP_ARBITRUM_SUBGRAPH_ID once it is published.
59
+ // Published production deployment, shared with the frontend's networks.js.
60
+ // Studio remains the free default; GRAPH_API_KEY enables gateway fallback.
61
+ gatewaySubgraphId: '2egvcs94ZStD38inRtK9bp3Maw3UZw4BDinH8jLyAF4G',
62
62
  bountyTokens: {
63
63
  USDC: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
64
64
  },
@@ -142,6 +142,95 @@ function decodeContractError(error, iface) {
142
142
  * fails if an ABI regeneration introduces a name without an entry here.
143
143
  */
144
144
  exports.ERROR_MESSAGES = {
145
+ AlreadyMember: { human: "This address is already a member of the role." },
146
+ DeploymentComplete: { human: "The organization deployment has already completed." },
147
+ DuplicateGroupMemberRole: { human: "A group lists the same role more than once." },
148
+ ForceRequired: { human: "Closing a role with accepted members requires the explicit force flag." },
149
+ GlobalRuleUnknown: { human: "The requested global rule does not exist." },
150
+ GrantBlockedByGovernanceBan: { human: "Governance has banned this member; a delegated manager cannot override the ban." },
151
+ GroupSizeLimit: { human: "A group may contain at most 16 roles." },
152
+ GroupsPerRoleLimit: { human: "A role may belong to at most 8 groups." },
153
+ InvalidConfigKey: { human: "This configuration key is not supported by the authority-only protocol." },
154
+ InvalidRulesMode: { human: "The rule mode is invalid." },
155
+ InvalidTypeId: { human: "The contract type ID is invalid." },
156
+ LegacyConfigRemoved: { human: "Legacy Hats configuration has been removed. Configure MembershipAuthority permissions instead." },
157
+ MaxMembersOnGroup: { human: "Groups derive membership from roles and cannot have a member cap." },
158
+ NoPendingAction: { human: "This pending action does not exist or has already been resolved." },
159
+ NotAGroup: { human: "The subject kind does not support this operation." },
160
+ NotAuthorizedManager: { human: "Your account lacks the required manager capability for this subject." },
161
+ NotClaimable: { human: "This role is not currently claimable by your account." },
162
+ NotInOrg: { human: "The target must already belong to the organization; offer the role to an outsider." },
163
+ NotRegisteredModule: { human: "Only the registered organization module may perform this operation." },
164
+ NotRegistryAdmin: { human: "Your account is not the registry administrator." },
165
+ NotYetActive: { human: "The delegated action review delay has not elapsed." },
166
+ PendingActionExists: { human: "This subject and user already have a pending action." },
167
+ PermFanoutLimit: { human: "A permission key and context may refer to at most 16 subjects." },
168
+ QuickJoinRoleNotOpen: { human: "Every QuickJoin role must allow default membership." },
169
+ RemovalIneffective: { human: "Soft removal leaves another eligibility source active. Review the sources before proposing a ban." },
170
+ RemoveBlockedByStickyGovernance: { human: "A delegated manager cannot remove this sticky governance grant." },
171
+ RoleCapacityBelowGenesisSeed: { human: "The role cap is lower than its initial membership allocation." },
172
+ RoleLimit: { human: "An account may accept at most 16 roles." },
173
+ RuleNotDelegable: { human: "Governance marked this rule as non-delegable." },
174
+ SelfManagedCycle: { human: "The manager configuration creates a management cycle." },
175
+ SubjectExists: { human: "This subject or group composition already exists." },
176
+ SubjectFull: { human: "The role has reached its membership cap. Reconcile a lapsed membership or increase the cap." },
177
+ UnknownSubject: { human: "The subject does not exist in this organization authority." },
178
+ VouchRateLimited: { human: "The daily vouch limit has been reached." },
179
+ WiringIncompatible: { human: "The authority subject configuration is structurally incompatible." },
180
+ // --- Authority routing / migration invariant checks ---
181
+ AlreadyBound: {
182
+ human: 'This legacy top-hat domain is already bound to an organization authority.',
183
+ suggestion: 'Inspect the existing router binding before proposing any binding change.',
184
+ },
185
+ NotBound: {
186
+ human: 'This legacy top-hat domain has no authority binding to remove.',
187
+ },
188
+ TopHatDomainMismatch: {
189
+ human: 'The supplied top-hat domain does not match the organization recorded in OrgRegistry.',
190
+ suggestion: 'Use the domain from the registered top-hat ID: topHatId shifted right by 224 bits.',
191
+ },
192
+ ArrayLengthMismatchRouter: {
193
+ human: 'The router balance query must contain one subject ID for each user address.',
194
+ },
195
+ WriteToPassthrough: {
196
+ human: 'The authority router does not allow writes through its legacy Hats passthrough route.',
197
+ suggestion: 'Use the organization authority for native membership changes.',
198
+ },
199
+ NoSubjects: {
200
+ human: 'Cutover verification requires at least one adopted subject, with the admin subject first.',
201
+ },
202
+ AuthorityNotBound: {
203
+ human: 'A cutover subject resolves through the router to a different authority than expected.',
204
+ suggestion: 'Correct the router binding in the governance cutover batch.',
205
+ },
206
+ AuthorityPaused: {
207
+ human: 'The organization authority is still paused at the end of the cutover batch.',
208
+ suggestion: 'Include the authority unpause before the final cutover verification call.',
209
+ },
210
+ MemberCountDrift: {
211
+ human: 'An authority membership count differs from the count recorded when the cutover batch was prepared.',
212
+ suggestion: 'Reconcile the membership snapshot and regenerate the cutover batch from the current state.',
213
+ },
214
+ SupplyDrift: {
215
+ human: 'A legacy Hats supply differs from the supply recorded when the cutover batch was prepared.',
216
+ suggestion: 'Account for legacy joins and removals in the migration snapshot before regenerating the cutover batch.',
217
+ },
218
+ MemberCountExceedsSupply: {
219
+ human: 'An adopted subject has more authority members than its canonical legacy Hats supply.',
220
+ suggestion: 'Correct the migrated membership set before completing the cutover.',
221
+ },
222
+ AdminNotResolved: {
223
+ human: 'The router does not recognize the registered organization executor as a member of the admin subject.',
224
+ suggestion: 'Check the first cutover subject, its executor membership, and the router binding.',
225
+ },
226
+ AdminHatInactive: {
227
+ human: 'The admin subject is inactive when read through the authority router.',
228
+ suggestion: 'Restore the admin subject configuration before completing the cutover.',
229
+ },
230
+ RouterNotCanonical: {
231
+ human: 'The cutover batch names a router different from the paymaster hub’s live HATS pointer.',
232
+ suggestion: 'Build the cutover batch against the router currently used by PaymasterHub.',
233
+ },
145
234
  // --- Accounts / usernames (UniversalAccountRegistry, QuickJoin, PasskeyAccountFactory) ---
146
235
  AccountExists: {
147
236
  human: 'An account is already registered for this address.',
@@ -242,10 +331,10 @@ exports.ERROR_MESSAGES = {
242
331
  // contract-neutral — it previously named only the TaskManager permission bits, which
243
332
  // sent people to `pop task perms` for a voting or token failure.
244
333
  Unauthorized: {
245
- human: 'Your wallet\'s hats do not carry the permission this action requires.',
246
- suggestion: 'See which hats you hold with: pop user whoami. For task actions the required bit is '
334
+ human: 'Your account lacks the membership or permission this action requires.',
335
+ suggestion: 'Inspect your organization memberships with: pop user whoami. For task actions the required bit is '
247
336
  + 'one of CREATE/CLAIM/REVIEW/ASSIGN/SELF_REVIEW/BUDGET/EDIT_META/EDIT_FULL — inspect with '
248
- + 'pop task perms show. For proposals, you need a creator hat: pop org roles.',
337
+ + 'pop task perms show. For proposals, inspect the authority creator permission on your roles or groups.',
249
338
  },
250
339
  UnauthorizedCaller: {
251
340
  human: 'Caller is not authorized for this executor operation.',
@@ -342,7 +431,8 @@ exports.ERROR_MESSAGES = {
342
431
  human: 'That hat is not allowed for this voting action.',
343
432
  },
344
433
  InvalidQuorum: {
345
- human: 'Quorum percentage is out of range (must be 1-100).',
434
+ human: 'A nonzero quorum override or equal-weight tally requires a restricted proposal.',
435
+ suggestion: 'Specify --subject-ids for the restricted electorate. Quorum is a voter count, not a percentage.',
346
436
  },
347
437
  InvalidThreshold: {
348
438
  human: 'Threshold percentage is out of range.',
@@ -572,7 +662,7 @@ exports.ERROR_MESSAGES = {
572
662
  },
573
663
  // --- Paymaster hub ---
574
664
  NotAdmin: {
575
- human: 'Caller is not the paymaster admin for this org.',
665
+ human: 'Caller is not an administrator authorized by this contract.',
576
666
  },
577
667
  NotOperator: {
578
668
  human: 'Caller is not a paymaster operator.',
@@ -621,8 +711,8 @@ exports.ERROR_MESSAGES = {
621
711
  human: 'This org is already registered with the paymaster.',
622
712
  },
623
713
  OrgNotRegistered: {
624
- human: 'This org is not registered with the paymaster.',
625
- suggestion: 'Register and fund it: pop paymaster deposit',
714
+ human: 'This organization is not registered in the registry required by this operation.',
715
+ suggestion: 'Check the organization ID and its registration in OrgRegistry or PaymasterHub, as applicable.',
626
716
  },
627
717
  OrgIsBanned: {
628
718
  human: 'This org is banned from paymaster sponsorship.',
@@ -767,6 +857,34 @@ exports.ERROR_MESSAGES = {
767
857
  InvalidSignature: {
768
858
  human: 'Signature verification failed.',
769
859
  },
860
+ AuthDataTooShort: {
861
+ human: 'WebAuthn authenticator data is shorter than the required 37 bytes.',
862
+ suggestion: 'Supply the complete authenticator data returned by the passkey authenticator.',
863
+ },
864
+ UserNotPresent: {
865
+ human: 'The passkey assertion does not confirm user presence.',
866
+ suggestion: 'Complete the authenticator’s user-presence prompt when authorizing the operation.',
867
+ },
868
+ ChallengeMismatch: {
869
+ human: 'The WebAuthn challenge is malformed or does not match the operation being authorized.',
870
+ suggestion: 'Check the challenge bytes, base64url encoding, and challenge index in the client data.',
871
+ },
872
+ MalformedClientData: {
873
+ human: 'The WebAuthn client data JSON or its field offsets are malformed.',
874
+ suggestion: 'Preserve the exact client data bytes and use the matching challenge and type offsets.',
875
+ },
876
+ InvalidWebAuthnSignature: {
877
+ human: 'The passkey assertion failed its challenge, authenticator flags, or signature checks.',
878
+ suggestion: 'Verify the credential, operation challenge, client data, and required authenticator verification flags.',
879
+ },
880
+ SignCountTooLow: {
881
+ human: 'The passkey signature counter did not advance beyond the stored value.',
882
+ suggestion: 'Check the credential’s counter and authenticator state; a reused assertion cannot authorize another operation.',
883
+ },
884
+ InvalidSignatureComponents: {
885
+ human: 'A P-256 signature component is zero or outside the curve’s valid range.',
886
+ suggestion: 'Check the r and s values extracted from the authenticator signature.',
887
+ },
770
888
  BeaconNotSet: {
771
889
  human: 'The passkey account beacon is not configured.',
772
890
  },
@@ -6,4 +6,6 @@
6
6
  * Uses nested org queries for tasks/members (known working pattern),
7
7
  * and top-level queries for vouches/tokenRequests/proposals (validated in other query files).
8
8
  */
9
- export declare const FETCH_ORG_ACTIVITY = "\n query FetchOrgActivity(\n $orgId: Bytes!\n $hybridVotingId: String\n $eligibilityModuleId: Bytes\n $tokenAddress: String\n ) {\n # Org overview + tasks + members via nested pattern (known working)\n organization(id: $orgId) {\n id\n name\n participationToken {\n id\n totalSupply\n symbol\n }\n paymentManager {\n distributionCounter\n }\n taskManager {\n id\n projects(where: { deleted: false }, first: 50) {\n id\n title\n tasks(first: 200, orderBy: taskId, orderDirection: desc) {\n id\n taskId\n title\n status\n payout\n assignee\n assigneeUsername\n completer\n completerUsername\n createdAt\n assignedAt\n submittedAt\n completedAt\n }\n }\n }\n users(orderBy: firstSeenAt, orderDirection: desc, first: 20) {\n address\n account { username }\n membershipStatus\n joinMethod\n firstSeenAt\n currentHatIds\n }\n directDemocracyVoting {\n ddvProposals(\n where: { status: \"Active\" }\n orderBy: startTimestamp\n orderDirection: desc\n first: 50\n ) {\n id\n proposalId\n title\n metadata { description optionNames }\n numOptions\n startTimestamp\n endTimestamp\n status\n isHatRestricted\n restrictedHatIds\n votes { voter optionIndexes optionWeights }\n }\n }\n }\n\n # Active hybrid proposals \u2014 top-level query (validated: proposals entity exists)\n activeHybridProposals: proposals(\n where: { hybridVoting: $hybridVotingId, status: \"Active\" }\n orderBy: startTimestamp\n orderDirection: desc\n first: 50\n ) {\n id\n proposalId\n title\n metadata { description optionNames }\n numOptions\n startTimestamp\n endTimestamp\n status\n isHatRestricted\n restrictedHatIds\n votes {\n voter\n voterUsername\n optionIndexes\n optionWeights\n classRawPowers\n votedAt\n }\n }\n\n # Recently ended hybrid proposals (catch outcomes since last heartbeat)\n endedHybridProposals: proposals(\n where: { hybridVoting: $hybridVotingId, status: \"Ended\" }\n orderBy: startTimestamp\n orderDirection: desc\n first: 10\n ) {\n id\n proposalId\n title\n status\n winningOption\n isValid\n wasExecuted\n executionFailed\n executionError\n votes { voter optionIndexes optionWeights }\n }\n\n # Active vouches \u2014 top-level query (validated in vouch.ts). isActive carries the\n # epoch filter: deployments that index the vouch epoch flip it false for every vouch\n # a configureVouching/resetVouches/clearWearerVouches voided, so this listing needs no\n # extra field. Older deployments still list superseded vouches \u2014 stale rather than\n # wrong, which is fine for an activity feed but NOT for quorum maths (see vouch.ts).\n activeVouches: vouches(\n where: { eligibilityModule: $eligibilityModuleId, isActive: true }\n orderBy: createdAt\n orderDirection: desc\n first: 100\n ) {\n hatId\n wearer\n wearerUsername\n voucher\n voucherUsername\n vouchCount\n createdAt\n }\n\n # Pending token requests \u2014 top-level query (validated in token.ts)\n pendingTokenRequests: tokenRequests(\n where: { participationToken: $tokenAddress, status: Pending }\n orderBy: createdAt\n orderDirection: desc\n first: 50\n ) {\n requestId\n requester\n amount\n metadata { reason }\n status\n createdAt\n }\n }\n";
9
+ export declare const FETCH_ORG_ACTIVITY = "\n query FetchOrgActivity(\n $orgId: Bytes!\n $hybridVotingId: String\n $authorityId: Bytes\n $tokenAddress: String\n ) {\n # Org overview + tasks + members via nested pattern (known working)\n organization(id: $orgId) {\n id\n name\n participationToken {\n id\n totalSupply\n symbol\n }\n paymentManager {\n distributionCounter\n }\n taskManager {\n id\n projects(where: { deleted: false }, first: 50) {\n id\n title\n tasks(first: 200, orderBy: taskId, orderDirection: desc) {\n id\n taskId\n title\n status\n payout\n assignee\n assigneeUsername\n completer\n completerUsername\n createdAt\n assignedAt\n submittedAt\n completedAt\n }\n }\n }\n users(orderBy: firstSeenAt, orderDirection: desc, first: 20) {\n address\n account { username }\n membershipStatus\n joinMethod\n firstSeenAt\n currentHatIds\n }\n directDemocracyVoting {\n ddvProposals(\n where: { status: \"Active\" }\n orderBy: startTimestamp\n orderDirection: desc\n first: 50\n ) {\n id\n proposalId\n title\n metadata { description optionNames }\n numOptions\n startTimestamp\n endTimestamp\n status\n isHatRestricted\n restrictedHatIds\n votes { voter optionIndexes optionWeights }\n }\n }\n }\n\n # Active hybrid proposals \u2014 top-level query (validated: proposals entity exists)\n activeHybridProposals: proposals(\n where: { hybridVoting: $hybridVotingId, status: \"Active\" }\n orderBy: startTimestamp\n orderDirection: desc\n first: 50\n ) {\n id\n proposalId\n title\n metadata { description optionNames }\n numOptions\n startTimestamp\n endTimestamp\n status\n isHatRestricted\n restrictedHatIds\n votes {\n voter\n voterUsername\n optionIndexes\n optionWeights\n classRawPowers\n votedAt\n }\n }\n\n # Recently ended hybrid proposals (catch outcomes since last heartbeat)\n endedHybridProposals: proposals(\n where: { hybridVoting: $hybridVotingId, status: \"Ended\" }\n orderBy: startTimestamp\n orderDirection: desc\n first: 10\n ) {\n id\n proposalId\n title\n status\n winningOption\n isValid\n wasExecuted\n executionFailed\n executionError\n votes { voter optionIndexes optionWeights }\n }\n\n activeVouches: subjectVouchRecords(\n where: { authority: $authorityId, active: true }\n orderBy: vouchedAt\n orderDirection: desc\n first: 100\n ) {\n subject { subjectId }\n wearer: user\n membership { userUsername vouchCount }\n voucher\n voucherUsername\n epoch\n config { epoch }\n createdAt: vouchedAt\n }\n\n # Pending token requests \u2014 top-level query (validated in token.ts)\n pendingTokenRequests: tokenRequests(\n where: { participationToken: $tokenAddress, status: Pending }\n orderBy: createdAt\n orderDirection: desc\n first: 50\n ) {\n requestId\n requester\n amount\n metadata { reason }\n status\n createdAt\n }\n }\n";
10
+ /** Preserve activity JSON keys while taking the live epoch and count from authority rows. */
11
+ export declare function normalizeAuthorityVouches(rows: any[]): any[];
@@ -9,11 +9,12 @@
9
9
  */
10
10
  Object.defineProperty(exports, "__esModule", { value: true });
11
11
  exports.FETCH_ORG_ACTIVITY = void 0;
12
+ exports.normalizeAuthorityVouches = normalizeAuthorityVouches;
12
13
  exports.FETCH_ORG_ACTIVITY = `
13
14
  query FetchOrgActivity(
14
15
  $orgId: Bytes!
15
16
  $hybridVotingId: String
16
- $eligibilityModuleId: Bytes
17
+ $authorityId: Bytes
17
18
  $tokenAddress: String
18
19
  ) {
19
20
  # Org overview + tasks + members via nested pattern (known working)
@@ -126,24 +127,20 @@ exports.FETCH_ORG_ACTIVITY = `
126
127
  votes { voter optionIndexes optionWeights }
127
128
  }
128
129
 
129
- # Active vouches — top-level query (validated in vouch.ts). isActive carries the
130
- # epoch filter: deployments that index the vouch epoch flip it false for every vouch
131
- # a configureVouching/resetVouches/clearWearerVouches voided, so this listing needs no
132
- # extra field. Older deployments still list superseded vouches — stale rather than
133
- # wrong, which is fine for an activity feed but NOT for quorum maths (see vouch.ts).
134
- activeVouches: vouches(
135
- where: { eligibilityModule: $eligibilityModuleId, isActive: true }
136
- orderBy: createdAt
130
+ activeVouches: subjectVouchRecords(
131
+ where: { authority: $authorityId, active: true }
132
+ orderBy: vouchedAt
137
133
  orderDirection: desc
138
134
  first: 100
139
135
  ) {
140
- hatId
141
- wearer
142
- wearerUsername
136
+ subject { subjectId }
137
+ wearer: user
138
+ membership { userUsername vouchCount }
143
139
  voucher
144
140
  voucherUsername
145
- vouchCount
146
- createdAt
141
+ epoch
142
+ config { epoch }
143
+ createdAt: vouchedAt
147
144
  }
148
145
 
149
146
  # Pending token requests — top-level query (validated in token.ts)
@@ -162,3 +159,11 @@ exports.FETCH_ORG_ACTIVITY = `
162
159
  }
163
160
  }
164
161
  `;
162
+ /** Preserve activity JSON keys while taking the live epoch and count from authority rows. */
163
+ function normalizeAuthorityVouches(rows) {
164
+ return rows.filter(v => v.active !== false && v.config && String(v.epoch) === String(v.config.epoch))
165
+ .map(v => ({ hatId: v.subject.subjectId, wearer: v.wearer,
166
+ wearerUsername: v.membership?.userUsername ?? null, voucher: v.voucher,
167
+ voucherUsername: v.voucherUsername, vouchCount: v.membership?.vouchCount ?? 0,
168
+ createdAt: v.createdAt }));
169
+ }
@@ -2,10 +2,10 @@
2
2
  * Organization Queries
3
3
  * Ported from frontend queries.js
4
4
  */
5
- export declare const FETCH_ORG_BY_ID = "\n query FetchOrgById($id: Bytes!) {\n organization(id: $id) {\n id\n name\n metadataHash\n deployedAt\n topHatId\n roleHatIds\n participationToken {\n id\n name\n symbol\n totalSupply\n }\n quickJoin {\n id\n }\n hybridVoting {\n id\n thresholdPct\n quorum\n }\n directDemocracyVoting {\n id\n thresholdPct\n quorum\n }\n taskManager {\n id\n projects {\n id\n title\n deleted\n }\n }\n educationHub {\n id\n nextModuleId\n }\n executorContract {\n id\n }\n eligibilityModule {\n id\n }\n paymentManager {\n id\n }\n zkEmailInvites {\n id\n }\n users {\n id\n address\n account {\n username\n metadata {\n avatar\n }\n }\n participationTokenBalance\n membershipStatus\n currentHatIds\n }\n roles(where: { isUserRole: true }) {\n id\n hatId\n name\n image\n canVote\n isUserRole\n }\n }\n }\n";
6
- export declare const FETCH_ORG_FULL_DATA = "\n query FetchOrgFullData($orgId: Bytes!) {\n organization(id: $orgId) {\n id\n name\n metadataHash\n metadataAdminHatId\n metadata {\n id\n description\n template\n backgroundColor\n logo\n hideTreasury\n useTokenSymbol\n taskPayoutHoursOnly\n taskPayoutHourlyRate\n links {\n name\n url\n index\n }\n }\n deployedAt\n topHatId\n roleHatIds\n participationToken {\n id\n name\n symbol\n totalSupply\n }\n quickJoin {\n id\n }\n hybridVoting {\n id\n thresholdPct\n quorum\n }\n directDemocracyVoting {\n id\n thresholdPct\n quorum\n }\n zkEmailInvites {\n id\n }\n taskManager {\n id\n creatorHatIds\n projects(where: { deleted: false }, first: 100) {\n id\n tasks(first: 1000) {\n id\n status\n }\n }\n }\n educationHub {\n id\n modules {\n id\n moduleId\n title\n contentHash\n metadata {\n description\n link\n quiz\n answersJson\n }\n payout\n status\n completions {\n learner\n }\n }\n }\n executorContract {\n id\n }\n eligibilityModule {\n id\n }\n paymentManager {\n id\n }\n users(orderBy: participationTokenBalance, orderDirection: desc, first: 100) {\n id\n address\n account {\n username\n metadata {\n avatar\n }\n }\n participationTokenBalance\n membershipStatus\n currentHatIds\n totalTasksCompleted\n totalVotes\n firstSeenAt\n }\n roles(where: { isUserRole: true }) {\n id\n hatId\n name\n image\n canVote\n isUserRole\n hat {\n name\n }\n }\n }\n }\n";
7
- export declare const GET_ORG_BY_NAME = "\n query GetOrgByName($name: String!) {\n organizations(where: { name: $name }, first: 1) {\n id\n name\n }\n }\n";
8
- export declare const FETCH_USER_ORGANIZATIONS = "\n query FetchUserOrganizations($userAddress: Bytes!) {\n users(where: { address: $userAddress, membershipStatus: Active }) {\n id\n membershipStatus\n participationTokenBalance\n totalTasksCompleted\n totalVotes\n organization {\n id\n name\n metadataHash\n participationToken {\n symbol\n }\n }\n }\n }\n";
5
+ export declare const FETCH_ORG_BY_ID = "\n query FetchOrgById($id: Bytes!) {\n organization(id: $id) {\n id\n name\n metadataHash\n deployedAt\n topHatId\n roleHatIds\n participationToken {\n id\n name\n symbol\n totalSupply\n }\n quickJoin {\n id\n }\n hybridVoting {\n id\n thresholdPct\n quorum\n }\n directDemocracyVoting {\n id\n thresholdPct\n quorum\n }\n taskManager {\n id\n projects {\n id\n title\n deleted\n }\n }\n educationHub {\n id\n nextModuleId\n }\n executorContract {\n id\n }\n membershipAuthority {\n id\n isRouterBound\n cutoverAt\n }\n paymentManager {\n id\n }\n zkEmailInvites {\n id\n }\n users {\n id\n address\n account {\n username\n metadata {\n avatar\n }\n }\n participationTokenBalance\n membershipStatus\n currentHatIds\n }\n roles(where: { isUserRole: true }) {\n id\n hatId\n name\n image\n canVote\n isUserRole\n }\n }\n }\n";
6
+ export declare const FETCH_ORG_FULL_DATA = "\n query FetchOrgFullData($orgId: Bytes!) {\n organization(id: $orgId) {\n id\n name\n metadataHash\n metadataAdminHatId\n metadata {\n id\n description\n template\n backgroundColor\n logo\n hideTreasury\n useTokenSymbol\n taskPayoutHoursOnly\n taskPayoutHourlyRate\n links {\n name\n url\n index\n }\n }\n deployedAt\n topHatId\n roleHatIds\n participationToken {\n id\n name\n symbol\n totalSupply\n }\n quickJoin {\n id\n }\n hybridVoting {\n id\n thresholdPct\n quorum\n }\n directDemocracyVoting {\n id\n thresholdPct\n quorum\n }\n zkEmailInvites {\n id\n }\n taskManager {\n id\n creatorHatIds\n projects(where: { deleted: false }, first: 100) {\n id\n tasks(first: 1000) {\n id\n status\n }\n }\n }\n educationHub {\n id\n modules {\n id\n moduleId\n title\n contentHash\n metadata {\n description\n link\n quiz\n answersJson\n }\n payout\n status\n completions {\n learner\n }\n }\n }\n executorContract {\n id\n }\n membershipAuthority {\n id\n isRouterBound\n cutoverAt\n }\n paymentManager {\n id\n }\n users(orderBy: participationTokenBalance, orderDirection: desc, first: 100) {\n id\n address\n account {\n username\n metadata {\n avatar\n }\n }\n participationTokenBalance\n membershipStatus\n currentHatIds\n totalTasksCompleted\n totalVotes\n firstSeenAt\n }\n roles(where: { isUserRole: true }) {\n id\n hatId\n name\n image\n canVote\n isUserRole\n hat {\n name\n }\n }\n }\n }\n";
7
+ export declare const GET_ORG_BY_NAME = "\n query GetOrgByName($name: String!) {\n organizations(where: { name: $name }, first: 100) {\n id\n name\n membershipAuthority { id isRouterBound cutoverAt }\n }\n }\n";
8
+ export declare const FETCH_USER_ORGANIZATIONS = "\n query FetchUserOrganizations($userAddress: Bytes!) {\n users(first: 1000, where: { address: $userAddress }) {\n id\n membershipStatus\n participationTokenBalance\n totalTasksCompleted\n totalVotes\n organization {\n id\n name\n membershipAuthority { id isRouterBound cutoverAt }\n metadataHash\n participationToken {\n symbol\n }\n }\n }\n }\n";
9
9
  /**
10
10
  * Just the org's payout convention + token symbol.
11
11
  *
@@ -48,8 +48,10 @@ exports.FETCH_ORG_BY_ID = `
48
48
  executorContract {
49
49
  id
50
50
  }
51
- eligibilityModule {
51
+ membershipAuthority {
52
52
  id
53
+ isRouterBound
54
+ cutoverAt
53
55
  }
54
56
  paymentManager {
55
57
  id
@@ -163,8 +165,10 @@ exports.FETCH_ORG_FULL_DATA = `
163
165
  executorContract {
164
166
  id
165
167
  }
166
- eligibilityModule {
168
+ membershipAuthority {
167
169
  id
170
+ isRouterBound
171
+ cutoverAt
168
172
  }
169
173
  paymentManager {
170
174
  id
@@ -201,15 +205,16 @@ exports.FETCH_ORG_FULL_DATA = `
201
205
  `;
202
206
  exports.GET_ORG_BY_NAME = `
203
207
  query GetOrgByName($name: String!) {
204
- organizations(where: { name: $name }, first: 1) {
208
+ organizations(where: { name: $name }, first: 100) {
205
209
  id
206
210
  name
211
+ membershipAuthority { id isRouterBound cutoverAt }
207
212
  }
208
213
  }
209
214
  `;
210
215
  exports.FETCH_USER_ORGANIZATIONS = `
211
216
  query FetchUserOrganizations($userAddress: Bytes!) {
212
- users(where: { address: $userAddress, membershipStatus: Active }) {
217
+ users(first: 1000, where: { address: $userAddress }) {
213
218
  id
214
219
  membershipStatus
215
220
  participationTokenBalance
@@ -218,6 +223,7 @@ exports.FETCH_USER_ORGANIZATIONS = `
218
223
  organization {
219
224
  id
220
225
  name
226
+ membershipAuthority { id isRouterBound cutoverAt }
221
227
  metadataHash
222
228
  participationToken {
223
229
  symbol