@show-karma/karma-gap-sdk 0.4.16 → 0.4.18

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 (188) hide show
  1. package/core/abi/AirdropNFT.json +1 -1
  2. package/core/abi/Allo.json +860 -860
  3. package/core/abi/AlloRegistry.json +578 -578
  4. package/core/abi/CommunityResolverABI.json +506 -506
  5. package/core/abi/Donations.json +251 -251
  6. package/core/abi/EAS.json +1 -1
  7. package/core/abi/MultiAttester.json +746 -746
  8. package/core/abi/ProjectResolver.json +574 -574
  9. package/core/abi/SchemaRegistry.json +1 -1
  10. package/core/abi/index.d.ts +1114 -0
  11. package/core/abi/index.js +26 -0
  12. package/core/class/AllGapSchemas.d.ts +9 -0
  13. package/core/class/AllGapSchemas.js +19 -0
  14. package/core/class/Attestation.d.ts +173 -0
  15. package/core/class/Attestation.js +333 -0
  16. package/core/class/Fetcher.d.ts +175 -0
  17. package/core/class/Fetcher.js +13 -0
  18. package/core/class/GAP.d.ts +254 -0
  19. package/core/class/GAP.js +289 -0
  20. package/core/class/GapSchema.d.ts +34 -0
  21. package/core/class/GapSchema.js +62 -0
  22. package/core/class/Gelato/{Gelato.ts → Gelato.js} +0 -23
  23. package/core/class/GrantProgramRegistry/Allo.d.ts +17 -0
  24. package/core/class/GrantProgramRegistry/Allo.js +137 -0
  25. package/core/class/GrantProgramRegistry/AlloRegistry.d.ts +15 -0
  26. package/core/class/GrantProgramRegistry/AlloRegistry.js +70 -0
  27. package/core/class/GraphQL/AxiosGQL.d.ts +6 -0
  28. package/core/class/GraphQL/AxiosGQL.js +25 -0
  29. package/core/class/GraphQL/EASClient.d.ts +16 -0
  30. package/core/class/GraphQL/EASClient.js +26 -0
  31. package/core/class/GraphQL/GapEasClient.d.ts +71 -0
  32. package/core/class/GraphQL/GapEasClient.js +451 -0
  33. package/core/class/GraphQL/index.js +19 -0
  34. package/core/class/Schema.d.ts +233 -0
  35. package/core/class/Schema.js +490 -0
  36. package/core/class/SchemaError.d.ts +30 -0
  37. package/core/class/SchemaError.js +39 -0
  38. package/core/class/contract/GapContract.d.ts +102 -0
  39. package/core/class/contract/GapContract.js +285 -0
  40. package/core/class/entities/Community.d.ts +34 -0
  41. package/core/class/entities/Community.js +109 -0
  42. package/core/class/entities/ContributorProfile.d.ts +41 -0
  43. package/core/class/entities/ContributorProfile.js +69 -0
  44. package/core/class/entities/Grant.d.ts +54 -0
  45. package/core/class/entities/Grant.js +223 -0
  46. package/core/class/entities/GrantUpdate.d.ts +62 -0
  47. package/core/class/entities/GrantUpdate.js +114 -0
  48. package/core/class/entities/MemberOf.d.ts +11 -0
  49. package/core/class/entities/MemberOf.js +33 -0
  50. package/core/class/entities/Milestone.d.ts +168 -0
  51. package/core/class/entities/Milestone.js +657 -0
  52. package/core/class/entities/Project.d.ts +92 -0
  53. package/core/class/entities/Project.js +418 -0
  54. package/core/class/entities/ProjectImpact.d.ts +50 -0
  55. package/core/class/entities/ProjectImpact.js +112 -0
  56. package/core/class/entities/ProjectMilestone.d.ts +60 -0
  57. package/core/class/entities/ProjectMilestone.js +174 -0
  58. package/core/class/entities/ProjectPointer.d.ts +12 -0
  59. package/core/class/entities/ProjectPointer.js +22 -0
  60. package/core/class/entities/ProjectUpdate.d.ts +50 -0
  61. package/core/class/entities/ProjectUpdate.js +110 -0
  62. package/core/class/entities/Track.d.ts +16 -0
  63. package/core/class/entities/Track.js +21 -0
  64. package/core/class/entities/index.js +26 -0
  65. package/core/class/index.js +26 -0
  66. package/core/class/karma-indexer/GapIndexerClient.d.ts +66 -0
  67. package/core/class/karma-indexer/GapIndexerClient.js +207 -0
  68. package/core/class/karma-indexer/api/GapIndexerApi.d.ts +73 -0
  69. package/core/class/karma-indexer/api/GapIndexerApi.js +256 -0
  70. package/core/class/karma-indexer/api/types.d.ts +309 -0
  71. package/core/class/karma-indexer/api/types.js +2 -0
  72. package/core/class/remote-storage/IpfsStorage.d.ts +23 -0
  73. package/core/class/remote-storage/IpfsStorage.js +56 -0
  74. package/core/class/remote-storage/RemoteStorage.d.ts +41 -0
  75. package/core/class/remote-storage/RemoteStorage.js +38 -0
  76. package/core/class/types/allo.d.ts +78 -0
  77. package/core/class/types/allo.js +2 -0
  78. package/core/class/types/attestations.d.ts +173 -0
  79. package/core/class/types/attestations.js +66 -0
  80. package/core/consts.d.ts +50 -0
  81. package/core/consts.js +699 -0
  82. package/core/index.js +24 -0
  83. package/core/shared/types.d.ts +13 -0
  84. package/core/shared/types.js +2 -0
  85. package/core/types.d.ts +131 -0
  86. package/core/types.js +13 -0
  87. package/core/utils/gelato/index.js +19 -0
  88. package/core/utils/gelato/send-gelato-txn.d.ts +55 -0
  89. package/core/utils/gelato/send-gelato-txn.js +100 -0
  90. package/core/utils/gelato/sponsor-handler.d.ts +9 -0
  91. package/core/utils/gelato/sponsor-handler.js +60 -0
  92. package/core/utils/gelato/watch-gelato-txn.d.ts +7 -0
  93. package/core/utils/gelato/watch-gelato-txn.js +63 -0
  94. package/core/utils/get-date.d.ts +1 -0
  95. package/core/utils/get-date.js +7 -0
  96. package/core/utils/get-ipfs-data.d.ts +1 -0
  97. package/core/utils/get-ipfs-data.js +20 -0
  98. package/core/utils/get-web3-provider.d.ts +2 -0
  99. package/core/utils/get-web3-provider.js +18 -0
  100. package/core/utils/gql-queries.d.ts +12 -0
  101. package/core/utils/gql-queries.js +90 -0
  102. package/core/utils/index.js +23 -0
  103. package/core/utils/map-filter.d.ts +8 -0
  104. package/core/utils/map-filter.js +20 -0
  105. package/core/utils/serialize-bigint.d.ts +1 -0
  106. package/core/utils/serialize-bigint.js +8 -0
  107. package/core/utils/to-unix.d.ts +1 -0
  108. package/core/utils/to-unix.js +25 -0
  109. package/index.js +17 -0
  110. package/package.json +45 -45
  111. package/.cursorrules +0 -43
  112. package/core/abi/index.ts +0 -21
  113. package/core/class/AllGapSchemas.ts +0 -21
  114. package/core/class/Attestation.ts +0 -429
  115. package/core/class/Fetcher.ts +0 -224
  116. package/core/class/GAP.ts +0 -481
  117. package/core/class/GapSchema.ts +0 -93
  118. package/core/class/GrantProgramRegistry/Allo.ts +0 -188
  119. package/core/class/GrantProgramRegistry/AlloRegistry.ts +0 -101
  120. package/core/class/GraphQL/AxiosGQL.ts +0 -29
  121. package/core/class/GraphQL/EASClient.ts +0 -34
  122. package/core/class/GraphQL/GapEasClient.ts +0 -869
  123. package/core/class/Schema.ts +0 -659
  124. package/core/class/SchemaError.ts +0 -42
  125. package/core/class/contract/GapContract.ts +0 -457
  126. package/core/class/entities/Community.ts +0 -148
  127. package/core/class/entities/ContributorProfile.ts +0 -108
  128. package/core/class/entities/Grant.ts +0 -321
  129. package/core/class/entities/GrantUpdate.ts +0 -187
  130. package/core/class/entities/MemberOf.ts +0 -52
  131. package/core/class/entities/Milestone.ts +0 -898
  132. package/core/class/entities/Project.ts +0 -672
  133. package/core/class/entities/ProjectImpact.ts +0 -170
  134. package/core/class/entities/ProjectMilestone.ts +0 -254
  135. package/core/class/entities/ProjectPointer.ts +0 -39
  136. package/core/class/entities/ProjectUpdate.ts +0 -176
  137. package/core/class/entities/Track.ts +0 -32
  138. package/core/class/karma-indexer/GapIndexerClient.ts +0 -383
  139. package/core/class/karma-indexer/api/GapIndexerApi.ts +0 -446
  140. package/core/class/karma-indexer/api/types.ts +0 -313
  141. package/core/class/remote-storage/IpfsStorage.ts +0 -76
  142. package/core/class/remote-storage/RemoteStorage.ts +0 -65
  143. package/core/class/types/allo.ts +0 -93
  144. package/core/class/types/attestations.ts +0 -223
  145. package/core/consts.ts +0 -775
  146. package/core/scripts/create-grant.ts +0 -102
  147. package/core/scripts/create-program.ts +0 -43
  148. package/core/scripts/create-schemas.ts +0 -65
  149. package/core/scripts/deploy.ts +0 -65
  150. package/core/scripts/index.ts +0 -1
  151. package/core/scripts/milestone-multi-grants.ts +0 -125
  152. package/core/shared/types.ts +0 -13
  153. package/core/types.ts +0 -224
  154. package/core/utils/gelato/send-gelato-txn.ts +0 -114
  155. package/core/utils/gelato/sponsor-handler.ts +0 -77
  156. package/core/utils/gelato/watch-gelato-txn.ts +0 -67
  157. package/core/utils/get-date.ts +0 -3
  158. package/core/utils/get-ipfs-data.ts +0 -13
  159. package/core/utils/get-web3-provider.ts +0 -18
  160. package/core/utils/gql-queries.ts +0 -133
  161. package/core/utils/map-filter.ts +0 -21
  162. package/core/utils/serialize-bigint.ts +0 -7
  163. package/core/utils/to-unix.ts +0 -18
  164. package/create-community-example.ts +0 -119
  165. package/csv-upload/README.md +0 -74
  166. package/csv-upload/config.ts +0 -41
  167. package/csv-upload/example.csv +0 -2
  168. package/csv-upload/keys.example.json +0 -8
  169. package/csv-upload/scripts/run.ts +0 -417
  170. package/csv-upload/types.ts +0 -39
  171. package/docs/.gitkeep +0 -0
  172. package/docs/images/attestation-architecture.png +0 -0
  173. package/docs/images/dfd-get-projects.png +0 -0
  174. package/gap-schema.yaml +0 -155
  175. package/milestone-workflow-example.ts +0 -353
  176. package/readme.md +0 -872
  177. package/schemas/.gitkeep +0 -0
  178. package/schemas/GAP-schemas-1692135812877.json +0 -33
  179. package/test-file-indexer-api.ts +0 -25
  180. package/tsconfig.json +0 -26
  181. /package/{csv-upload/.gitkeep → core/class/Gelato/Gelato.d.ts} +0 -0
  182. /package/core/class/GraphQL/{index.ts → index.d.ts} +0 -0
  183. /package/core/class/entities/{index.ts → index.d.ts} +0 -0
  184. /package/core/class/{index.ts → index.d.ts} +0 -0
  185. /package/core/{index.ts → index.d.ts} +0 -0
  186. /package/core/utils/gelato/{index.ts → index.d.ts} +0 -0
  187. /package/core/utils/{index.ts → index.d.ts} +0 -0
  188. /package/{index.ts → index.d.ts} +0 -0
@@ -1,188 +0,0 @@
1
- import { ethers, formatEther } from "ethers";
2
- import AlloContractABI from "../../abi/Allo.json";
3
- import { AlloContracts } from "../../consts";
4
- import { Address } from "../types/allo";
5
- import { AbiCoder } from "ethers";
6
- import { Allo } from "@allo-team/allo-v2-sdk/";
7
- import { CreatePoolArgs } from "@allo-team/allo-v2-sdk/dist/Allo/types";
8
- import { TransactionData } from "@allo-team/allo-v2-sdk/dist/Common/types";
9
- import axios from "axios";
10
-
11
- // ABI fragment for the Initialized event
12
- const INITIALIZED_EVENT = ["event Initialized(uint256 poolId, bytes data)"];
13
-
14
- export class AlloBase {
15
- private signer: ethers.Signer;
16
- private contract: ethers.Contract;
17
- private allo: Allo;
18
- private pinataJWTToken: string;
19
-
20
- constructor(signer: ethers.Signer, pinataJWTToken: string, chainId: number) {
21
- this.signer = signer;
22
- this.contract = new ethers.Contract(
23
- AlloContracts.alloProxy,
24
- AlloContractABI,
25
- signer
26
- );
27
- this.allo = new Allo({ chain: chainId });
28
- this.pinataJWTToken = pinataJWTToken;
29
- }
30
-
31
- async saveAndGetCID(
32
- data: any,
33
- pinataMetadata = { name: "via karma-gap-sdk" }
34
- ) {
35
- try {
36
- const res = await axios.post(
37
- "https://api.pinata.cloud/pinning/pinJSONToIPFS",
38
- {
39
- pinataContent: data,
40
- pinataMetadata: pinataMetadata,
41
- },
42
- {
43
- headers: {
44
- "Content-Type": "application/json",
45
- Authorization: `Bearer ${this.pinataJWTToken}`,
46
- },
47
- }
48
- );
49
- return res.data.IpfsHash;
50
- } catch (error) {
51
- console.log(error);
52
- }
53
- }
54
-
55
- async encodeStrategyInitData(
56
- applicationStart: number,
57
- applicationEnd: number,
58
- roundStart: number,
59
- roundEnd: number,
60
- payoutToken: string
61
- ) {
62
- const encoder = new AbiCoder();
63
- const initStrategyData = encoder.encode(
64
- ["bool", "bool", "uint256", "uint256", "uint256", "uint256", "address[]"],
65
- [
66
- false, // useRegistryAnchor
67
- true, // metadataRequired
68
- applicationStart, // Eg. Curr + 1 hour later registrationStartTime
69
- applicationEnd, // Eg. Curr + 5 days later registrationEndTime
70
- roundStart, // Eg. Curr + 2 hours later allocationStartTime
71
- roundEnd, // Eg. Curr + 10 days later allocaitonEndTime
72
- [payoutToken],
73
- ]
74
- );
75
-
76
- return initStrategyData;
77
- }
78
-
79
- async createGrant(args: any, callback?: Function) {
80
- console.log("Creating grant...");
81
- const walletBalance = await this.signer.provider.getBalance(
82
- await this.signer.getAddress()
83
- );
84
-
85
- console.log(
86
- "Wallet balance:",
87
- formatEther(walletBalance.toString()),
88
- " ETH"
89
- );
90
-
91
- try {
92
- const metadata_cid = await this.saveAndGetCID({
93
- round: args.roundMetadata,
94
- application: args.applicationMetadata,
95
- });
96
-
97
- const metadata = {
98
- protocol: BigInt(1),
99
- pointer: metadata_cid,
100
- };
101
-
102
- const initStrategyData = (await this.encodeStrategyInitData(
103
- args.applicationStart,
104
- args.applicationEnd,
105
- args.roundStart,
106
- args.roundEnd,
107
- args.payoutToken
108
- )) as Address;
109
-
110
- const createPoolArgs: CreatePoolArgs = {
111
- profileId: args.profileId,
112
- strategy: args.strategy,
113
- initStrategyData: initStrategyData, // unique to the strategy
114
- token: args.payoutToken,
115
- amount: BigInt(args.matchingFundAmt),
116
- metadata: metadata,
117
- managers: args.managers,
118
- };
119
-
120
- callback?.("preparing");
121
- const txData: TransactionData = this.allo.createPool(createPoolArgs);
122
-
123
- const tx = await this.signer.sendTransaction({
124
- data: txData.data,
125
- to: txData.to,
126
- value: BigInt(txData.value),
127
- });
128
- callback?.("pending");
129
- const receipt = await tx.wait();
130
- callback?.("confirmed");
131
-
132
- // Create interface to parse the logs
133
- const iface = new ethers.Interface(INITIALIZED_EVENT);
134
- let poolId;
135
-
136
- // Find the Initialized event in the logs
137
- const initializedLog = receipt.logs.find((log) => {
138
- try {
139
- const parsed = iface.parseLog(log);
140
- return parsed.name === "Initialized";
141
- } catch {
142
- return false;
143
- }
144
- });
145
-
146
- if (initializedLog) {
147
- const parsedLog = iface.parseLog(initializedLog);
148
- poolId = parsedLog.args.poolId.toString();
149
- console.log(`Transaction ${tx.hash} - Found poolId: ${poolId}`);
150
- } else {
151
- poolId = receipt.logs[receipt.logs.length - 1].topics[1]; // Fallback to Initialized order logic
152
- console.log(`No Initialized event found in tx ${tx.hash}`);
153
- }
154
-
155
- return {
156
- poolId: BigInt(poolId).toString(),
157
- txHash: tx.hash,
158
- };
159
- } catch (error) {
160
- console.error(`Failed to create pool: ${error}`);
161
- throw new Error(`Failed to create pool metadata: ${error}`);
162
- }
163
- }
164
-
165
- async updatePoolMetadata(
166
- poolId: string,
167
- poolMetadata: any,
168
- callback?: Function
169
- ) {
170
- try {
171
- callback?.("preparing");
172
- const metadata_cid = await this.saveAndGetCID(poolMetadata);
173
- const metadata = {
174
- protocol: 1,
175
- pointer: metadata_cid,
176
- };
177
-
178
- const tx = await this.contract.updatePoolMetadata(poolId, metadata);
179
- callback?.("pending");
180
- const receipt = await tx.wait();
181
- callback?.("confirmed");
182
- return receipt;
183
- } catch (error) {
184
- console.error(`Failed to update pool metadata: ${error}`);
185
- throw new Error(`Failed to update pool metadata: ${error}`);
186
- }
187
- }
188
- }
@@ -1,101 +0,0 @@
1
- import { ethers } from "ethers";
2
- import AlloRegistryABI from "../../abi/AlloRegistry.json";
3
- import { AlloContracts } from "../../consts";
4
- import { ProfileMetadata } from "../types/allo";
5
- import axios from "axios";
6
-
7
- export class AlloRegistry {
8
- private contract: ethers.Contract;
9
- private pinataJWTToken: string;
10
-
11
- constructor(signer: ethers.Signer, pinataJWTToken: string) {
12
- this.contract = new ethers.Contract(
13
- AlloContracts.registry,
14
- AlloRegistryABI,
15
- signer
16
- );
17
-
18
- this.pinataJWTToken = pinataJWTToken;
19
- }
20
-
21
- async saveAndGetCID(
22
- data: any,
23
- pinataMetadata = { name: "via karma-gap-sdk" }
24
- ) {
25
- try {
26
- const res = await axios.post(
27
- "https://api.pinata.cloud/pinning/pinJSONToIPFS",
28
- {
29
- pinataContent: data,
30
- pinataMetadata: pinataMetadata,
31
- },
32
- {
33
- headers: {
34
- "Content-Type": "application/json",
35
- Authorization: `Bearer ${this.pinataJWTToken}`,
36
- },
37
- }
38
- );
39
- return res.data.IpfsHash;
40
- } catch (error) {
41
- console.log(error);
42
- }
43
- }
44
-
45
- async createProgram(
46
- nonce: number,
47
- name: string,
48
- profileMetadata: ProfileMetadata,
49
- owner: string,
50
- members: string[]
51
- ) {
52
- console.log("Creating program...");
53
- try {
54
- const metadata_cid = await this.saveAndGetCID(profileMetadata);
55
- const metadata = {
56
- protocol: 1,
57
- pointer: metadata_cid,
58
- };
59
-
60
- const tx = await this.contract.createProfile(
61
- nonce,
62
- name,
63
- metadata,
64
- owner,
65
- members
66
- );
67
- const receipt = await tx.wait();
68
-
69
- // Get ProfileCreated event
70
- const profileCreatedEvent = receipt.logs.find(
71
- (event) => event.eventName === "ProfileCreated"
72
- );
73
-
74
- return {
75
- profileId: profileCreatedEvent.args[0],
76
- txHash: receipt.hash,
77
- };
78
- } catch (error) {
79
- console.error(`Failed to register program: ${error}`);
80
- }
81
- }
82
-
83
- async updateProgramMetadata(
84
- profileId: string,
85
- profileMetadata: ProfileMetadata
86
- ) {
87
- try {
88
- const metadata_cid = await this.saveAndGetCID(profileMetadata);
89
- const metadata = {
90
- protocol: 1,
91
- pointer: metadata_cid,
92
- };
93
-
94
- const tx = await this.contract.updateProfileMetadata(profileId, metadata);
95
- const receipt = await tx.wait();
96
- return receipt;
97
- } catch (error) {
98
- console.error(`Failed to update profile metadata: ${error}`);
99
- }
100
- }
101
- }
@@ -1,29 +0,0 @@
1
- import type { AxiosInstance } from "axios";
2
- import axios from "axios";
3
-
4
- export abstract class AxiosGQL {
5
- protected client: AxiosInstance;
6
-
7
- constructor(url: string) {
8
- this.client = axios.create({
9
- baseURL: url,
10
- headers: {
11
- "Content-Type": "application/json",
12
- },
13
- });
14
- }
15
-
16
- protected async query<R = unknown, T = unknown>(
17
- query: string,
18
- variables?: T
19
- ): Promise<R> {
20
- const {
21
- data: { data },
22
- } = await this.client.post<{ data: R }>("", {
23
- query,
24
- variables,
25
- });
26
-
27
- return data;
28
- }
29
- }
@@ -1,34 +0,0 @@
1
- import { Networks } from "../../consts";
2
- import { EASNetworkConfig, Hex, TNetwork } from "../../types";
3
- import { AxiosGQL } from "./AxiosGQL";
4
-
5
- interface EASClientProps {
6
- network: TNetwork;
7
- }
8
-
9
- export class EASClient extends AxiosGQL implements EASClientProps {
10
- private readonly _network: EASNetworkConfig & { name: TNetwork };
11
-
12
- constructor(args: EASClientProps) {
13
- const { network } = args;
14
- super(Networks[network].url);
15
-
16
- this.assert(args);
17
-
18
- this._network = { ...Networks[network], name: network };
19
- }
20
-
21
- /**
22
- * Validate the constructor arguments
23
- * @param args
24
- */
25
- private assert(args: EASClientProps) {
26
- if (!Networks[args.network]) {
27
- throw new Error("Invalid network");
28
- }
29
- }
30
-
31
- get network(): TNetwork {
32
- return this._network.name;
33
- }
34
- }