UNPKG

@mentaport/certificates

Version:
402 lines (395 loc) 12.2 kB
import { ContractEnvironment, BlockchainTypes, ContentSource, Base, IResults, ICertificateProject, Environment } from '@mentaport/common'; export { Base, BlockchainTypes, ContentSource, ContractEnvironment, ContractStatus, Environment, ICertificateProject, IResults, MentaportUtils } from '@mentaport/common'; declare enum UploadProgress { NA = "Nothing is Uploading", UPLOAD = "Uploading Content", COMPLETE = "Upload Complete" } declare enum ContentTypes { Image = "image", Audio = "audio", Video = "video" } declare enum ContentFormat { mp3 = "mp3", wav = "wav", png = "png", jpg = "jpg", mp4 = "mp4" } declare enum CertificateStatus { NonActive = "NonActive", Initiating = "Initiating", Processing = "Processing", Pending = "Pending", Active = "Active" } declare enum VerificationStatus { Initiating = "Initiating", Processing = "Processing", NoCertificate = "NoCertificate", Certified = "Certified" } declare enum CopyrightInfo { NoCopyright = "no_copyright", Registered = "copyright_registered", Registering = "copyright_registering" } declare enum AITrainingMiningInfo { NotAllowed = "not_allowed", Allow = "allow" } interface ICertificateIdentifier { certId: string; projectId: string; } interface ICertificate { status: CertificateStatus; certId: string; createdTimestamp: string; environment: ContractEnvironment; contentType: ContentTypes; contractAddress: string; projectId: string; thumbnail: string; name: string; username: string; description: string; scans: number; usingAI: boolean; copyrightInfo?: CopyrightInfo; aiTrainingMiningInfo: AITrainingMiningInfo; contentFormat?: ContentFormat; ipfsThumbnail?: string; aiSoftware?: string; aiModel?: string; album?: string; albumYear?: string; city?: string; country?: string; blockchain?: BlockchainTypes; tokenId?: string; metadataUri?: string; txnHash?: string; c2paManifest?: string | any; } interface ICertificateArg { projectId: string; contentFormat: ContentFormat; name: string; username: string; description: string; usingAI: boolean; aiTrainingMiningInfo: AITrainingMiningInfo; certId?: string; copyrightInfo?: CopyrightInfo; aiSoftware?: string; aiModel?: string; album?: string; albumYear?: string; city?: string; country?: string; } interface ICertificateUpdateArg { projectId: string; certId: string; contentFormat: ContentFormat; name?: string; username?: string; description?: string; usingAI?: boolean; copyrightInfo?: CopyrightInfo; aiTrainingMiningInfo: AITrainingMiningInfo; aiSoftware?: string; aiModel?: string; album?: string; albumYear?: string; city?: string; country?: string; } interface IStatus<T> { status: T; statusMessage: string; error: boolean; } interface ICertStatusResult { status: IStatus<CertificateStatus>; certificate?: ICertificate; } interface ICertificatesQuery { trending: ICertificate[]; certificates: ICertificate[]; totalCount: number; hasMore: boolean; nextCursor?: string; } interface ICertificatesCount { totalCount: number; certificatesCount: [ { count: number; projectId: string; } ]; } interface IVerify { status: IStatus<VerificationStatus>; verId: string; certificate?: ICertificate; c2pa_manifest?: string | any; validation_errors?: string[]; } interface C2PA_manifest { active_manifest: string; manifests: any; } interface IReportContentArg { isOk: boolean; certIds: string[]; timestamp: string; projectId?: string; count?: number; url?: string; } interface IReportNewContentArg { verId: string; source: ContentSource; url?: string; } interface IPresignedUrl { action: string; id: string; signedUrl: ISignedUrl; } interface ISignedUrl { url: string; fields: { key: string; AWSAccessKeyId: string; 'x-amz-security-token': string; policy: string; signature: string; }; } interface IMessage { message: string; } interface ICertificateAnalyticsArg { queryDateStart: string; queryDateEnd: string; projectId?: string; certId?: string; } interface IScanWeek { week: number; count: number; } interface IScanMonth { year: number; month: number; count: number; } interface IScanLocations { url: string; count: number; latestDate: string; certIds?: string[]; reportStatus?: string; } interface IScanMetrics { queryDateStart: string; queryDateEnd: string; certId: string; totalCerts: number; totalScans: number; perWeek: IScanWeek[]; perMonth: IScanMonth[]; journey: IScanLocations[]; } declare class Core extends Base { protected _uploadUrl: string; protected _uploadProgress: string; constructor(apiKey: string); /** * Function to check if app running in mobile * * @returns {boolean} */ isMobile(): boolean; getApi(): string; getUploadProgress(): string; protected resetUploadProgress(): void; protected startUploadProgress(): void; protected completeUploadProgress(): void; } declare class CertificatesNFTs extends Core { /** * Function to create a watermark certificate * * @param {certificate} ICertificateArg * @param {blobContent} Content * * @returns {IResults<ICertificate>} Returns create certificate */ createCertificate(certificate: ICertificateArg, blobContent: Blob): Promise<IResults<ICertificate>>; private createCertificatePresignURL; private createCertificateSmall; /** * Function to update a certificate that is NonActive or Pending * * @param {certificate} ICertificateUpdateArg * @param {blobContent} Content * * @returns {IResults<ICertificate>} Returns create certificate */ updateCertificate(certificate: ICertificateUpdateArg, blobContent: Blob): Promise<IResults<ICertificate>>; private updateCertificatePresignURL; private updateCertificateSmall; /** * Function to approve / non-approve a certificate before it generates NFT * * @param {projectId} ProjectId * @param {certId} CertId from init content call * @param {approve} Approve boolean * * @returns {IResults<ICertificate>} Returns certificate */ approveCertificate(projectId: string, certId: string, approved: boolean): Promise<IResults<ICertificate>>; /** * Function to delete a NonActive or Pending certificate * * @param {projectId} ProjectId * @param {certId} CertId from init content call * * @returns {IResults<null>} Returns status of deletion */ deleteCertificate(projectId: string, certId: string): Promise<IResults<null>>; /** * Get certificates based on specified criteria. * @param {GetCertificatesOptions} options - The options for fetching certificates * - ProjectId: Filter certificates by project ID * - CertId: Get a specific certificate by ID (requires projectId) * - Cursor: Pagination cursor for fetching next page of results * - Limit: Maximum number of certificates to return * @returns {Promise<IResults<ICertificatesQuery>>} Returns paginated certificates matching the criteria */ getCertificates(options?: { projectId?: string; certId?: string; cursor?: string; limit?: number; }): Promise<IResults<ICertificatesQuery>>; /** * Get certificates count based on specified criteria. * @param {projectId} projectId - The options for fetching certificates count * - ProjectId: Filter certificates by project ID * @returns {Promise<IResults<ICertificatesCount>>} Returns certificates count matching the criteria */ getTotalCertificates(projectId?: string): Promise<IResults<ICertificatesCount>>; /** * Function to get download url of certificate * @param {projectId} ProjectId * @param {certId} certId * * @returns {url} Returns url */ getDownloadUrl(projectId: string, certId: string): Promise<IResults<string>>; /** * Function to check certificate status * @param {projectId} ProjectId * @param {certId} certId * * @returns {ICertStatusResult} Returns certificate and status information. */ getCertificateStatus(projectId: string, certId: string): Promise<IResults<ICertStatusResult>>; /** * Function to get active projects of a user. * All projects will be return if all is true (active and non active) * @param {allProjects} Boolean to get all projects, not just active * * @returns {ICertificateProject[]} Returns projects of user */ getProjects(all?: boolean): Promise<IResults<ICertificateProject[]>>; /** * Function to verify if a piece of content has a certificate calling from a server * @param {contentFormat} contentFormat * @param {urlFound} URL of where it was found * @param {blobContent} content blob * * @returns {IResults<IVerify>} Returns a certificate if found * */ verifyContent(contentFormat: ContentFormat, urlFound: string, blobContent: Blob): Promise<IResults<IVerify>>; private verifyContentSmall; private verifyContentPresignURL; /** * Function to get verification progress status * @param {verId} string * * @returns {IVerify} Returns IVerify */ getVerificationStatus(verId: string): Promise<IResults<IVerify>>; /** * Function to report a content * * @param {isOk} Status of report * @param {certIds} certIds list to report * @param {timestamp} timestamp of verification record * @param {count} Number of verification in url to report * @param {url} URL link (optional) * */ reportContent(reportContent: IReportContentArg): Promise<IResults<null>>; /** * Function to report a content * * @param {id} id returned in verifyContent * @param {source} Source (optional) * @param {url} URL link (optional) * */ reportNewContent(reportContent: IReportNewContentArg): Promise<IResults<null>>; /** * Function to get certificates analytics * @param {queryDateStart} Query start date * @param {queryDateEnd} Query end date * @param {projectId} ProjectId * @param {certId} CertId * * @returns {ICertificatesQuery} Returns all certificates per project. * Each project certificate will be in its own array */ getCertificatesAnalytics(analytics: ICertificateAnalyticsArg): Promise<IResults<IScanMetrics>>; } declare class CertificateSDK extends Core { /** * Constructor for Core SDK * * @param {apiKey} APIKey * * @returns {} */ constructor(apiKey: string); /** * Function to set the client with default env Production * All users have to call this function * * @param {url} urlPath (optional) * * @returns {void} */ setClient(): void; /** * Function to set the client environment. * All users have to call this function * * @param {environment} Environment to run sdk in * @param {url} urlPath (optional-only for testing) * * @returns {void} */ setClientEnv(environment: Environment, url?: string, upload_url?: string): void; } interface CertificateSDK extends Core, CertificatesNFTs { } export { AITrainingMiningInfo, C2PA_manifest, CertificateSDK, CertificateStatus, ContentFormat, ContentTypes, CopyrightInfo, ICertStatusResult, ICertificate, ICertificateAnalyticsArg, ICertificateArg, ICertificateIdentifier, ICertificateUpdateArg, ICertificatesCount, ICertificatesQuery, IMessage, IPresignedUrl, IReportContentArg, IReportNewContentArg, IScanLocations, IScanMetrics, IScanMonth, IScanWeek, ISignedUrl, IStatus, IVerify, UploadProgress, VerificationStatus };