@show-karma/karma-gap-sdk 0.3.21 → 0.3.22

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.
@@ -1,5 +1,5 @@
1
1
  import { Attestation } from '../Attestation';
2
- import { Grantee, MemberDetails, ProjectDetails, ProjectImpact } from '../types/attestations';
2
+ import { Grantee, MemberDetails, ProjectDetails, ProjectEndorsement, ProjectImpact } from '../types/attestations';
3
3
  import { Hex, MultiAttestPayload, SignerOrProvider, TNetwork } from 'core/types';
4
4
  import { Grant } from './Grant';
5
5
  import { MemberOf } from './MemberOf';
@@ -14,6 +14,7 @@ export declare class Project extends Attestation<IProject> {
14
14
  grants: Grant[];
15
15
  grantee: Grantee;
16
16
  impacts: ProjectImpact[];
17
+ endorsements: ProjectEndorsement[];
17
18
  /**
18
19
  * Creates the payload for a multi-attestation.
19
20
  *
@@ -73,5 +74,6 @@ export declare class Project extends Attestation<IProject> {
73
74
  removeAllMembers(signer: SignerOrProvider): Promise<void>;
74
75
  static from(attestations: _Project[], network: TNetwork): Project[];
75
76
  attestImpact(signer: SignerOrProvider, data: ProjectImpact): Promise<void>;
77
+ attestEndorsement(signer: SignerOrProvider, data?: ProjectEndorsement): Promise<void>;
76
78
  }
77
79
  export {};
@@ -16,6 +16,7 @@ class Project extends Attestation_1.Attestation {
16
16
  this.members = [];
17
17
  this.grants = [];
18
18
  this.impacts = [];
19
+ this.endorsements = [];
19
20
  }
20
21
  /**
21
22
  * Creates the payload for a multi-attestation.
@@ -256,6 +257,19 @@ class Project extends Attestation_1.Attestation {
256
257
  return impact;
257
258
  });
258
259
  }
260
+ if (attestation.endorsements) {
261
+ project.endorsements = attestation.endorsements.map((pi) => {
262
+ const endorsement = new attestations_1.ProjectEndorsement({
263
+ ...pi,
264
+ data: {
265
+ ...pi.data,
266
+ },
267
+ schema: new AllGapSchemas_1.AllGapSchemas().findSchema('ProjectDetails', consts_1.chainIdToNetwork[attestation.chainID]),
268
+ chainID: attestation.chainID,
269
+ });
270
+ return endorsement;
271
+ });
272
+ }
259
273
  return project;
260
274
  });
261
275
  }
@@ -272,5 +286,18 @@ class Project extends Attestation_1.Attestation {
272
286
  await projectImpact.attest(signer);
273
287
  this.impacts.push(projectImpact);
274
288
  }
289
+ async attestEndorsement(signer, data) {
290
+ const projectEndorsement = new attestations_1.ProjectEndorsement({
291
+ data: {
292
+ ...data,
293
+ type: 'project-endorsement',
294
+ },
295
+ recipient: this.recipient,
296
+ refUID: this.uid,
297
+ schema: this.schema.gap.findSchema('ProjectDetails'),
298
+ });
299
+ await projectEndorsement.attest(signer);
300
+ this.endorsements.push(projectEndorsement);
301
+ }
275
302
  }
276
303
  exports.Project = Project;
@@ -133,3 +133,12 @@ export declare class ProjectImpact extends Attestation<IProjectImpact> implement
133
133
  type?: string;
134
134
  constructor(data: AttestationArgs<IProjectImpact, GapSchema>);
135
135
  }
136
+ export interface IProjectEndorsement {
137
+ comment?: string;
138
+ type?: string;
139
+ }
140
+ export declare class ProjectEndorsement extends Attestation<IProjectEndorsement> implements IProjectEndorsement {
141
+ comment?: string;
142
+ type?: string;
143
+ constructor(data: AttestationArgs<IProjectEndorsement, GapSchema>);
144
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ProjectImpact = exports.GrantCompleted = exports.Grantee = exports.ProjectDetails = exports.Tag = exports.MilestoneCompleted = exports.MemberDetails = exports.GrantVerified = exports.GrantRound = exports.GrantDetails = exports.CommunityDetails = void 0;
3
+ exports.ProjectEndorsement = exports.ProjectImpact = exports.GrantCompleted = exports.Grantee = exports.ProjectDetails = exports.Tag = exports.MilestoneCompleted = exports.MemberDetails = exports.GrantVerified = exports.GrantRound = exports.GrantDetails = exports.CommunityDetails = void 0;
4
4
  const Attestation_1 = require("../Attestation");
5
5
  const GrantUpdate_1 = require("../entities/GrantUpdate");
6
6
  class CommunityDetails extends Attestation_1.Attestation {
@@ -61,3 +61,10 @@ class ProjectImpact extends Attestation_1.Attestation {
61
61
  }
62
62
  }
63
63
  exports.ProjectImpact = ProjectImpact;
64
+ class ProjectEndorsement extends Attestation_1.Attestation {
65
+ constructor(data) {
66
+ data.data.type = "project-endorsement";
67
+ super(data);
68
+ }
69
+ }
70
+ exports.ProjectEndorsement = ProjectEndorsement;
package/core/consts.js CHANGED
@@ -234,5 +234,11 @@ const MountEntities = (network) => ({
234
234
  uid: network.schemas.GrantUpdateStatus,
235
235
  references: "GrantUpdate",
236
236
  },
237
+ ProjectEndorsement: {
238
+ name: "ProjectEndorsement",
239
+ schema: DetailsSchema,
240
+ uid: network.schemas.Details,
241
+ references: "Project",
242
+ },
237
243
  });
238
244
  exports.MountEntities = MountEntities;
package/core/types.d.ts CHANGED
@@ -21,7 +21,7 @@ export interface AttestArgs<T = unknown> {
21
21
  refUID?: Hex;
22
22
  signer: SignerOrProvider;
23
23
  }
24
- export type TSchemaName = 'Community' | 'CommunityDetails' | 'Grant' | 'GrantDetails' | 'GrantVerified' | 'MemberOf' | 'MemberDetails' | 'Milestone' | 'MilestoneCompleted' | 'MilestoneApproved' | 'Project' | 'ProjectDetails' | 'Details' | 'ProjectImpact' | 'GrantUpdate' | 'GrantUpdateStatus';
24
+ export type TSchemaName = 'Community' | 'CommunityDetails' | 'Grant' | 'GrantDetails' | 'GrantVerified' | 'MemberOf' | 'MemberDetails' | 'Milestone' | 'MilestoneCompleted' | 'MilestoneApproved' | 'Project' | 'ProjectDetails' | 'Details' | 'ProjectImpact' | 'GrantUpdate' | 'GrantUpdateStatus' | 'ProjectEndorsement';
25
25
  export type TResolvedSchemaNames = 'Community' | 'Grant' | 'GrantVerified' | 'MemberOf' | 'MilestoneCompleted' | 'MilestoneApproved' | 'Project' | 'Details' | 'GrantUpdateStatus';
26
26
  export type TExternalLink = 'twitter' | 'github' | 'website' | 'linkedin' | 'discord';
27
27
  export type TNetwork = 'optimism' | 'optimism-sepolia' | "arbitrum" | 'sepolia';
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.3.21",
6
+ "version": "0.3.22",
7
7
  "description": "Simple and easy interface between EAS and Karma GAP.",
8
8
  "main": "./index.js",
9
9
  "author": "KarmaHQ",