@show-karma/karma-gap-sdk 0.4.9 → 0.4.11

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.
@@ -8,6 +8,7 @@ export interface IContributorProfile {
8
8
  github?: string;
9
9
  twitter?: string;
10
10
  linkedin?: string;
11
+ farcaster?: string;
11
12
  }
12
13
  export declare class ContributorProfile extends Attestation<IContributorProfile> implements IContributorProfile {
13
14
  name: string;
@@ -15,6 +16,7 @@ export declare class ContributorProfile extends Attestation<IContributorProfile>
15
16
  github?: string;
16
17
  twitter?: string;
17
18
  linkedin?: string;
19
+ farcaster?: string;
18
20
  constructor(data: AttestationArgs<IContributorProfile, GapSchema>);
19
21
  /**
20
22
  * Creates the payload for a multi-attestation.
@@ -4,16 +4,11 @@ import { IMilestone, Milestone } from "./Milestone";
4
4
  import { GapSchema } from "../GapSchema";
5
5
  import { Hex, MultiAttestPayload, SignerOrProvider, TNetwork } from "core/types";
6
6
  import { Community } from "./Community";
7
- import { IGrantResponse } from "../karma-indexer/api/types";
7
+ import { IGrantResponse, IProjectResponse, ISummaryProject } from "../karma-indexer/api/types";
8
8
  import { GrantUpdate, IGrantUpdate } from "./GrantUpdate";
9
9
  export interface IGrant {
10
10
  communityUID: Hex;
11
11
  }
12
- export interface ISummaryProject {
13
- title: string;
14
- slug?: string;
15
- uid: Hex;
16
- }
17
12
  export declare class Grant extends Attestation<IGrant> {
18
13
  details?: GrantDetails;
19
14
  communityUID: Hex;
@@ -24,7 +19,7 @@ export declare class Grant extends Attestation<IGrant> {
24
19
  updates: GrantUpdate[];
25
20
  members: string[];
26
21
  completed?: GrantCompleted;
27
- project?: ISummaryProject;
22
+ project?: IProjectResponse | ISummaryProject;
28
23
  categories?: string[];
29
24
  verify(signer: SignerOrProvider): Promise<void>;
30
25
  /**
@@ -1,13 +1,11 @@
1
+ import { IGrantUpdateBase } from "core/shared/types";
2
+ import { Transaction } from "ethers";
1
3
  import { SignerOrProvider, TNetwork } from "../../../core/types";
2
4
  import { Attestation } from "../Attestation";
3
- import { Transaction } from "ethers";
4
5
  export interface _IGrantUpdate extends GrantUpdate {
5
6
  }
6
- export interface IGrantUpdate {
7
- title: string;
8
- text: string;
7
+ export interface IGrantUpdate extends IGrantUpdateBase {
9
8
  type?: string;
10
- proofOfWork?: string;
11
9
  }
12
10
  type IStatus = "verified";
13
11
  export interface IGrantUpdateStatus {
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GrantUpdate = exports.GrantUpdateStatus = void 0;
4
+ const consts_1 = require("../../../core/consts");
5
+ const AllGapSchemas_1 = require("../AllGapSchemas");
4
6
  const Attestation_1 = require("../Attestation");
5
7
  const SchemaError_1 = require("../SchemaError");
6
- const AllGapSchemas_1 = require("../AllGapSchemas");
7
- const consts_1 = require("../../../core/consts");
8
8
  class GrantUpdateStatus extends Attestation_1.Attestation {
9
9
  }
10
10
  exports.GrantUpdateStatus = GrantUpdateStatus;
@@ -0,0 +1,16 @@
1
+ import { TNetwork } from "core/types";
2
+ import { ITrackResponse } from "../karma-indexer/api/types";
3
+ export declare class Track {
4
+ id: string;
5
+ name: string;
6
+ description?: string;
7
+ communityUID: string;
8
+ isArchived: boolean;
9
+ createdAt: Date;
10
+ updatedAt: Date;
11
+ programId?: string;
12
+ isActive?: boolean;
13
+ network: TNetwork;
14
+ constructor(data: any, network: TNetwork);
15
+ static from(data: ITrackResponse[], network: TNetwork): Track[];
16
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Track = void 0;
4
+ class Track {
5
+ constructor(data, network) {
6
+ this.id = data.id;
7
+ this.name = data.name;
8
+ this.description = data.description;
9
+ this.communityUID = data.communityUID;
10
+ this.isArchived = data.isArchived ?? false;
11
+ this.createdAt = new Date(data.createdAt);
12
+ this.updatedAt = new Date(data.updatedAt);
13
+ this.programId = data.programId;
14
+ this.isActive = data.isActive;
15
+ this.network = network;
16
+ }
17
+ static from(data, network) {
18
+ return data.map((item) => new Track(item, network));
19
+ }
20
+ }
21
+ exports.Track = Track;
@@ -7,3 +7,4 @@ export * from "./GrantUpdate";
7
7
  export * from "./ProjectUpdate";
8
8
  export * from "./ProjectPointer";
9
9
  export * from "./ContributorProfile";
10
+ export * from "./Track";
@@ -23,3 +23,4 @@ __exportStar(require("./GrantUpdate"), exports);
23
23
  __exportStar(require("./ProjectUpdate"), exports);
24
24
  __exportStar(require("./ProjectPointer"), exports);
25
25
  __exportStar(require("./ContributorProfile"), exports);
26
+ __exportStar(require("./Track"), exports);
@@ -2,7 +2,7 @@ import { TSchemaName, IAttestation, Hex } from "core/types";
2
2
  import { Attestation } from "../Attestation";
3
3
  import { GapSchema } from "../GapSchema";
4
4
  import { Fetcher } from "../Fetcher";
5
- import { Community, Project, Grant, Milestone, MemberOf } from "../entities";
5
+ import { Community, Project, Grant, Milestone, MemberOf, Track } from "../entities";
6
6
  import { Grantee } from "../types/attestations";
7
7
  import { ICommunityAdminsResponse } from "./api/types";
8
8
  import { ProjectMilestone } from "../entities/ProjectMilestone";
@@ -40,4 +40,27 @@ export declare class GapIndexerClient extends Fetcher {
40
40
  milestonesOf(grants: Grant[]): Promise<Milestone[]>;
41
41
  membersOf(projects: Project[]): Promise<MemberOf[]>;
42
42
  slugExists(slug: string): Promise<boolean>;
43
+ /**
44
+ * Track related methods
45
+ */
46
+ getTracks(communityUID: string, includeArchived?: boolean): Promise<Track[]>;
47
+ getTrackById(id: string): Promise<Track>;
48
+ createTrack(trackData: {
49
+ name: string;
50
+ description?: string;
51
+ communityUID: string;
52
+ }): Promise<Track>;
53
+ updateTrack(id: string, trackData: {
54
+ name?: string;
55
+ description?: string;
56
+ communityUID?: string;
57
+ }): Promise<Track>;
58
+ archiveTrack(id: string): Promise<Track>;
59
+ assignTracksToProgram(programId: string, trackIds: string[]): Promise<any[]>;
60
+ unassignTrackFromProgram(programId: string, trackId: string): Promise<any>;
61
+ getTracksForProgram(programId: string): Promise<Track[]>;
62
+ getTracksForProject(projectId: string, programId: string, activeOnly?: boolean): Promise<Track[]>;
63
+ assignTracksToProject(projectId: string, programId: string, trackIds: string[]): Promise<any[]>;
64
+ unassignTracksFromProject(projectId: string, programId: string, trackIds: string[]): Promise<any[]>;
65
+ getProjectsByTrack(communityId: string, programId: string, trackId?: string): Promise<any[]>;
43
66
  }
@@ -152,5 +152,56 @@ class GapIndexerClient extends Fetcher_1.Fetcher {
152
152
  async slugExists(slug) {
153
153
  return await this.apiClient.slugExists(slug);
154
154
  }
155
+ /**
156
+ * Track related methods
157
+ */
158
+ async getTracks(communityUID, includeArchived = false) {
159
+ const { data } = await this.apiClient.getTracks(communityUID, includeArchived);
160
+ return entities_1.Track.from(data, this.gap.network);
161
+ }
162
+ async getTrackById(id) {
163
+ const { data } = await this.apiClient.getTrackById(id);
164
+ return entities_1.Track.from([data], this.gap.network)[0];
165
+ }
166
+ async createTrack(trackData) {
167
+ const { data } = await this.apiClient.createTrack(trackData);
168
+ return entities_1.Track.from([data], this.gap.network)[0];
169
+ }
170
+ async updateTrack(id, trackData) {
171
+ const { data } = await this.apiClient.updateTrack(id, trackData);
172
+ return entities_1.Track.from([data], this.gap.network)[0];
173
+ }
174
+ async archiveTrack(id) {
175
+ const { data } = await this.apiClient.archiveTrack(id);
176
+ return entities_1.Track.from([data], this.gap.network)[0];
177
+ }
178
+ async assignTracksToProgram(programId, trackIds) {
179
+ const { data } = await this.apiClient.assignTracksToProgram(programId, trackIds);
180
+ return data;
181
+ }
182
+ async unassignTrackFromProgram(programId, trackId) {
183
+ const { data } = await this.apiClient.unassignTrackFromProgram(programId, trackId);
184
+ return data;
185
+ }
186
+ async getTracksForProgram(programId) {
187
+ const { data } = await this.apiClient.getTracksForProgram(programId);
188
+ return entities_1.Track.from(data, this.gap.network);
189
+ }
190
+ async getTracksForProject(projectId, programId, activeOnly = true) {
191
+ const { data } = await this.apiClient.getTracksForProject(projectId, programId, activeOnly);
192
+ return entities_1.Track.from(data, this.gap.network);
193
+ }
194
+ async assignTracksToProject(projectId, programId, trackIds) {
195
+ const { data } = await this.apiClient.assignTracksToProject(projectId, programId, trackIds);
196
+ return data;
197
+ }
198
+ async unassignTracksFromProject(projectId, programId, trackIds) {
199
+ const { data } = await this.apiClient.unassignTracksFromProject(projectId, programId, trackIds);
200
+ return data;
201
+ }
202
+ async getProjectsByTrack(communityId, programId, trackId) {
203
+ const { data } = await this.apiClient.getProjectsByTrack(communityId, programId, trackId);
204
+ return data;
205
+ }
155
206
  }
156
207
  exports.GapIndexerClient = GapIndexerClient;
@@ -1,5 +1,5 @@
1
1
  import { AxiosGQL } from "../../GraphQL/AxiosGQL";
2
- import { Hex, IAttestationResponse, ICommunityResponse, ICommunityAdminsResponse, IGrantResponse, IProjectResponse, ISearchResponse, IProjectMilestoneResponse } from "./types";
2
+ import { Hex, IAttestationResponse, ICommunityResponse, ICommunityAdminsResponse, IGrantResponse, IProjectResponse, ISearchResponse, IProjectMilestoneResponse, ITrackResponse, ITrackAssignmentResponse, IProjectTrackResponse } from "./types";
3
3
  export declare class GapIndexerApi extends AxiosGQL {
4
4
  constructor(url: string);
5
5
  attestation(uid: Hex): Promise<import("axios").AxiosResponse<IAttestationResponse, any>>;
@@ -47,4 +47,27 @@ export declare class GapIndexerApi extends AxiosGQL {
47
47
  */
48
48
  milestonesOf(uid: Hex): Promise<import("axios").AxiosResponse<any, any>>;
49
49
  slugExists(slug: string): Promise<boolean>;
50
+ /**
51
+ * Tracks
52
+ */
53
+ getTracks(communityUID: string, includeArchived?: boolean): Promise<import("axios").AxiosResponse<ITrackResponse[], any>>;
54
+ getTrackById(id: string): Promise<import("axios").AxiosResponse<ITrackResponse, any>>;
55
+ createTrack(data: {
56
+ name: string;
57
+ description?: string;
58
+ communityUID: string;
59
+ }): Promise<import("axios").AxiosResponse<ITrackResponse, any>>;
60
+ updateTrack(id: string, data: {
61
+ name?: string;
62
+ description?: string;
63
+ communityUID?: string;
64
+ }): Promise<import("axios").AxiosResponse<ITrackResponse, any>>;
65
+ archiveTrack(id: string): Promise<import("axios").AxiosResponse<ITrackResponse, any>>;
66
+ assignTracksToProgram(programId: string, trackIds: string[]): Promise<import("axios").AxiosResponse<ITrackAssignmentResponse[], any>>;
67
+ unassignTrackFromProgram(programId: string, trackId: string): Promise<import("axios").AxiosResponse<ITrackAssignmentResponse, any>>;
68
+ getTracksForProgram(programId: string): Promise<import("axios").AxiosResponse<ITrackResponse[], any>>;
69
+ getTracksForProject(projectId: string, programId: string, activeOnly?: boolean): Promise<import("axios").AxiosResponse<ITrackResponse[], any>>;
70
+ assignTracksToProject(projectId: string, programId: string, trackIds: string[]): Promise<import("axios").AxiosResponse<any[], any>>;
71
+ unassignTracksFromProject(projectId: string, programId: string, trackIds: string[]): Promise<import("axios").AxiosResponse<any[], any>>;
72
+ getProjectsByTrack(communityId: string, programId: string, trackId?: string): Promise<import("axios").AxiosResponse<IProjectTrackResponse[], any>>;
50
73
  }
@@ -28,6 +28,7 @@ const Endpoints = {
28
28
  },
29
29
  project: {
30
30
  all: () => "/projects",
31
+ checkSlug: (slug) => `/projects/check-slug/${slug}`,
31
32
  byUidOrSlug: (uidOrSlug) => `/projects/${uidOrSlug}`,
32
33
  grants: (uidOrSlug) => `/projects/${uidOrSlug}/grants`,
33
34
  milestones: (uidOrSlug) => `/projects/${uidOrSlug}/milestones`,
@@ -36,6 +37,26 @@ const Endpoints = {
36
37
  search: {
37
38
  all: () => "/search",
38
39
  },
40
+ tracks: {
41
+ all: () => "/tracks",
42
+ byId: (id) => `/tracks/${id}`,
43
+ byCommunity: (communityUID, includeArchived = false) => `/tracks?communityUID=${communityUID}${includeArchived ? "&includeArchived=true" : ""}`,
44
+ },
45
+ programs: {
46
+ tracks: {
47
+ all: (programId) => `/programs/${programId}/tracks`,
48
+ assign: (programId) => `/programs/${programId}/tracks`,
49
+ remove: (programId, trackId) => `/programs/${programId}/tracks/${trackId}`,
50
+ },
51
+ },
52
+ projectTracks: {
53
+ all: (projectId, programId, activeOnly = true) => `/programs/${programId}/projects/${projectId}/tracks${activeOnly ? "" : "?activeOnly=false"}`,
54
+ assign: (projectId) => `/projects/${projectId}/tracks`,
55
+ remove: (programId, projectId) => `/programs/${programId}/project/${projectId}/tracks`,
56
+ },
57
+ community: {
58
+ programProjects: (communityId, programId, trackId) => `/community/${communityId}/program/${programId}/projects${trackId ? `?trackId=${trackId}` : ""}`,
59
+ },
39
60
  };
40
61
  class GapIndexerApi extends AxiosGQL_1.AxiosGQL {
41
62
  constructor(url) {
@@ -173,12 +194,63 @@ class GapIndexerApi extends AxiosGQL_1.AxiosGQL {
173
194
  }
174
195
  async slugExists(slug) {
175
196
  try {
176
- await this.client.get(Endpoints.project.byUidOrSlug(slug));
197
+ await this.client.get(Endpoints.project.checkSlug(slug));
177
198
  return true;
178
199
  }
179
200
  catch (err) {
180
201
  return false;
181
202
  }
182
203
  }
204
+ /**
205
+ * Tracks
206
+ */
207
+ async getTracks(communityUID, includeArchived = false) {
208
+ const response = await this.client.get(Endpoints.tracks.byCommunity(communityUID, includeArchived));
209
+ return response;
210
+ }
211
+ async getTrackById(id) {
212
+ const response = await this.client.get(Endpoints.tracks.byId(id));
213
+ return response;
214
+ }
215
+ async createTrack(data) {
216
+ const response = await this.client.post(Endpoints.tracks.all(), data);
217
+ return response;
218
+ }
219
+ async updateTrack(id, data) {
220
+ const response = await this.client.put(Endpoints.tracks.byId(id), data);
221
+ return response;
222
+ }
223
+ async archiveTrack(id) {
224
+ const response = await this.client.delete(Endpoints.tracks.byId(id));
225
+ return response;
226
+ }
227
+ async assignTracksToProgram(programId, trackIds) {
228
+ const response = await this.client.post(Endpoints.programs.tracks.assign(programId), { trackIds });
229
+ return response;
230
+ }
231
+ async unassignTrackFromProgram(programId, trackId) {
232
+ const response = await this.client.delete(Endpoints.programs.tracks.remove(programId, trackId));
233
+ return response;
234
+ }
235
+ async getTracksForProgram(programId) {
236
+ const response = await this.client.get(Endpoints.programs.tracks.all(programId));
237
+ return response;
238
+ }
239
+ async getTracksForProject(projectId, programId, activeOnly = true) {
240
+ const response = await this.client.get(Endpoints.projectTracks.all(projectId, programId, activeOnly));
241
+ return response;
242
+ }
243
+ async assignTracksToProject(projectId, programId, trackIds) {
244
+ const response = await this.client.post(Endpoints.projectTracks.assign(projectId), { trackIds, programId });
245
+ return response;
246
+ }
247
+ async unassignTracksFromProject(projectId, programId, trackIds) {
248
+ const response = await this.client.delete(Endpoints.projectTracks.remove(programId, projectId), { data: { trackIds } });
249
+ return response;
250
+ }
251
+ async getProjectsByTrack(communityId, programId, trackId) {
252
+ const response = await this.client.get(Endpoints.community.programProjects(communityId, programId, trackId));
253
+ return response;
254
+ }
183
255
  }
184
256
  exports.GapIndexerApi = GapIndexerApi;
@@ -1,3 +1,4 @@
1
+ import { IGrantUpdateBase } from "core/shared/types";
1
2
  export type Hex = `0x${string}`;
2
3
  export type JSONStr = string;
3
4
  export type ExternalLink = {
@@ -63,11 +64,8 @@ export interface IGrantUpdateStatus extends IAttestationResponse {
63
64
  };
64
65
  }
65
66
  export interface IGrantUpdate extends IAttestationResponse {
66
- data: {
67
- text: string;
68
- title: string;
67
+ data: IGrantUpdateBase & {
69
68
  type: "grant-update";
70
- proofOfWork?: string;
71
69
  };
72
70
  verified?: IGrantUpdateStatus[];
73
71
  }
@@ -140,6 +138,7 @@ export interface IGrantDetails extends IAttestationResponse {
140
138
  programId?: string;
141
139
  type: "grant-details";
142
140
  fundUsage?: string;
141
+ selectedTrackIds?: string[];
143
142
  };
144
143
  }
145
144
  export interface IGrantResponse extends IAttestationResponse {
@@ -150,7 +149,7 @@ export interface IGrantResponse extends IAttestationResponse {
150
149
  details?: IGrantDetails;
151
150
  milestones: IMilestoneResponse[];
152
151
  completed?: IGrantUpdate;
153
- project: ISummaryProject;
152
+ project: IProjectResponse;
154
153
  updates: IGrantUpdate[];
155
154
  community: ICommunityResponse;
156
155
  members: Hex[];
@@ -263,4 +262,34 @@ export interface ISearchResponse {
263
262
  projects: IProjectResponse[];
264
263
  communities: ICommunityResponse[];
265
264
  }
265
+ export interface ITrackResponse {
266
+ id: string;
267
+ name: string;
268
+ description?: string;
269
+ communityUID: string;
270
+ isArchived: boolean;
271
+ createdAt: string;
272
+ updatedAt: string;
273
+ programId?: string;
274
+ isActive?: boolean;
275
+ chainID?: number;
276
+ }
277
+ export interface ITrackAssignmentResponse {
278
+ id: string;
279
+ programId: string;
280
+ chainID: number;
281
+ trackId: string;
282
+ track: ITrackResponse;
283
+ }
284
+ export interface IProjectTrackResponse {
285
+ projectUID: string;
286
+ chainID: number;
287
+ programId: string;
288
+ track: ITrackResponse;
289
+ project: {
290
+ uid: string;
291
+ chainID: number;
292
+ details: any;
293
+ };
294
+ }
266
295
  export {};
@@ -45,6 +45,7 @@ export interface IGrantDetails {
45
45
  startDate?: number;
46
46
  programId?: string;
47
47
  fundUsage?: string;
48
+ selectedTrackIds?: string[];
48
49
  }
49
50
  export declare class GrantDetails extends Attestation<IGrantDetails> implements IGrantDetails {
50
51
  title: string;
@@ -60,6 +61,7 @@ export declare class GrantDetails extends Attestation<IGrantDetails> implements
60
61
  type: string;
61
62
  startDate?: number;
62
63
  fundUsage?: string;
64
+ selectedTrackIds?: string[];
63
65
  }
64
66
  export interface IGrantRound {
65
67
  name: string;
@@ -0,0 +1,6 @@
1
+ export interface IGrantUpdateBase {
2
+ title: string;
3
+ text: string;
4
+ proofOfWork?: string;
5
+ completionPercentage?: string;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/core/types.d.ts CHANGED
@@ -29,7 +29,7 @@ export interface AttestArgs<T = unknown> {
29
29
  }
30
30
  export type TSchemaName = "Community" | "CommunityDetails" | "Grant" | "GrantDetails" | "GrantVerified" | "MemberOf" | "MemberDetails" | "Milestone" | "MilestoneCompleted" | "MilestoneApproved" | "Project" | "ProjectDetails" | "Details" | "ProjectImpact" | "ProjectUpdate" | "ProjectUpdateStatus" | "ProjectPointer" | "GrantUpdate" | "GrantUpdateStatus" | "ProjectEndorsement" | "ProjectMilestone" | "ProjectMilestoneStatus" | "ContributorProfile";
31
31
  export type TResolvedSchemaNames = "Community" | "Grant" | "GrantVerified" | "MemberOf" | "MilestoneCompleted" | "MilestoneApproved" | "Project" | "Details" | "ProjectUpdateStatus" | "GrantUpdateStatus" | "ProjectUpdateStatus" | "ProjectMilestoneStatus" | "ContributorProfile";
32
- export type TExternalLink = "twitter" | "github" | "website" | "linkedin" | "discord";
32
+ export type TExternalLink = "twitter" | "github" | "website" | "linkedin" | "discord" | "pitchDeck" | "demoVideo" | "farcaster";
33
33
  export type TNetwork = "optimism" | "celo" | "optimism-sepolia" | "arbitrum" | "sepolia" | "sei" | "sei-testnet" | "base-sepolia";
34
34
  /**
35
35
  * Generic GAP Facade interface.
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.4.9",
6
+ "version": "0.4.11",
7
7
  "description": "Simple and easy interface between EAS and Karma GAP.",
8
8
  "main": "./index.js",
9
9
  "author": "KarmaHQ",
@@ -1,117 +0,0 @@
1
- [
2
- {
3
- "inputs": [
4
- {
5
- "internalType": "bytes32",
6
- "name": "_profileId",
7
- "type": "bytes32"
8
- },
9
- {
10
- "internalType": "address",
11
- "name": "_strategy",
12
- "type": "address"
13
- },
14
- {
15
- "internalType": "bytes",
16
- "name": "_initStrategyData",
17
- "type": "bytes"
18
- },
19
- {
20
- "internalType": "address",
21
- "name": "_token",
22
- "type": "address"
23
- },
24
- {
25
- "internalType": "uint256",
26
- "name": "_amount",
27
- "type": "uint256"
28
- },
29
- {
30
- "components": [
31
- {
32
- "internalType": "uint256",
33
- "name": "protocol",
34
- "type": "uint256"
35
- },
36
- {
37
- "internalType": "string",
38
- "name": "pointer",
39
- "type": "string"
40
- }
41
- ],
42
- "internalType": "struct IAllo.Metadata",
43
- "name": "_metadata",
44
- "type": "tuple"
45
- },
46
- {
47
- "internalType": "address[]",
48
- "name": "_managers",
49
- "type": "address[]"
50
- }
51
- ],
52
- "name": "createPool",
53
- "outputs": [
54
- {
55
- "internalType": "uint256",
56
- "name": "poolId",
57
- "type": "uint256"
58
- }
59
- ],
60
- "stateMutability": "payable",
61
- "type": "function"
62
- },
63
- {
64
- "inputs": [
65
- {
66
- "internalType": "uint256",
67
- "name": "_poolId",
68
- "type": "uint256"
69
- },
70
- {
71
- "components": [
72
- {
73
- "internalType": "uint256",
74
- "name": "protocol",
75
- "type": "uint256"
76
- },
77
- {
78
- "internalType": "string",
79
- "name": "pointer",
80
- "type": "string"
81
- }
82
- ],
83
- "internalType": "struct IAllo.Metadata",
84
- "name": "_metadata",
85
- "type": "tuple"
86
- }
87
- ],
88
- "name": "updatePoolMetadata",
89
- "outputs": [],
90
- "stateMutability": "nonpayable",
91
- "type": "function"
92
- },
93
- {
94
- "inputs": [
95
- {
96
- "internalType": "address",
97
- "name": "_alloAddress",
98
- "type": "address"
99
- }
100
- ],
101
- "stateMutability": "nonpayable",
102
- "type": "constructor"
103
- },
104
- {
105
- "inputs": [],
106
- "name": "allo",
107
- "outputs": [
108
- {
109
- "internalType": "contract IAllo",
110
- "name": "",
111
- "type": "address"
112
- }
113
- ],
114
- "stateMutability": "view",
115
- "type": "function"
116
- }
117
- ]