import { CredentialSchema } from './schema'; import { BBSCredential, BBSPlusCredential, BBDT16Credential, Credential, PSCredential } from './credential'; import { BBSPublicKey, BBSSecretKey, BBSSignature, BBSSignatureParams } from '../bbs'; import { BBSPlusPublicKeyG2, BBSPlusSecretKey, BBSPlusSignatureG1, BBSPlusSignatureParamsG1, Encoder } from '../bbs-plus'; import { PSPublicKey, PSSecretKey, PSSignature, PSSignatureParams } from '../ps'; import { SignedMessages } from '../types'; import { CredentialBuilderCommon } from './credential-builder-common'; import { BBDT16Mac, BBDT16MacParams, BBDT16MacSecretKey } from '../bbdt16-mac'; export interface ISigningOpts { /** Whether the credential should contain exactly the same fields (object keys, array items, literals) as the schema. Providing false for it will result in generation of a new schema to match the credential and that schema will be embedded in the signed credential. */ requireSameFieldsAsSchema: boolean; } export declare const DefaultSigningOpts: ISigningOpts; /** * Create a credential */ export declare abstract class CredentialBuilder extends CredentialBuilderCommon { /** Follows semver and must be updated accordingly when the logic of this class changes or the underlying crypto changes. */ static VERSION: string; _encodedAttributes?: { [key: string]: Uint8Array; }; _sig?: Signature; constructor(); get signature(): Signature | undefined; /** * Serializes and signs creating a credential. * Expects the credential to have the same fields as schema. This is intentional to always communicate to the * verifier the full structure of the credential. * * @param secretKey * @param signatureParams - This makes bulk issuance of credentials with same number of attributes faster because the * signature params don't have to be generated. * @param signingOpts */ sign(secretKey: SecretKey, signatureParams?: SignatureParams, signingOpts?: Partial): Credential; /** * When schema doesn't match the credential, create a new appropriate schema and update the credential. Returns the * serialized credential. Legacy version. Used by SDK for some older credential versions * @param signingOpts */ updateSchemaIfNeededLegacy(signingOpts?: Partial): object; /** * When schema doesn't match the credential, create a new appropriate schema and update the credential. Returns the * serialized credential * @param signingOpts */ updateSchemaIfNeeded(signingOpts?: Partial): object; static hasSameFieldsAsSchema(cred: object, schema: CredentialSchema): boolean; protected abstract signMessageObject(messages: Object, secretKey: SecretKey, labelOrParams: Uint8Array | SignatureParams | undefined, encoder: Encoder): SignedMessages; protected abstract newCredential(version: string, schema: CredentialSchema, subject: object, topLevelFields: Map, sig: Signature, credStatus?: object): Credential; } /** * Create a `BBS` credential */ export declare class BBSCredentialBuilder extends CredentialBuilder { protected signMessageObject(messages: Object, secretKey: BBSSecretKey, labelOrParams: Uint8Array | BBSSignatureParams | undefined, encoder: Encoder): SignedMessages; protected newCredential(version: string, schema: CredentialSchema, subject: object, topLevelFields: Map, sig: BBSSignature, credStatus?: object): BBSCredential; protected applyDefaultProofMetadataIfNeeded(s: object): void; } /** * Create a `BBS+` credential */ export declare class BBSPlusCredentialBuilder extends CredentialBuilder { protected signMessageObject(messages: Object, secretKey: BBSPlusSecretKey, labelOrParams: Uint8Array | BBSPlusSignatureParamsG1 | undefined, encoder: Encoder): SignedMessages; protected newCredential(version: string, schema: CredentialSchema, subject: object, topLevelFields: Map, sig: BBSPlusSignatureG1, credStatus?: object): BBSPlusCredential; protected applyDefaultProofMetadataIfNeeded(s: object): void; } /** * Create a `Pointcheval-Sanders` credential */ export declare class PSCredentialBuilder extends CredentialBuilder { protected signMessageObject(messages: Object, secretKey: PSSecretKey, labelOrParams: Uint8Array | PSSignatureParams | undefined, encoder: Encoder): SignedMessages; protected newCredential(version: string, schema: CredentialSchema, subject: object, topLevelFields: Map, sig: PSSignature, credStatus?: object): PSCredential; protected applyDefaultProofMetadataIfNeeded(s: object): void; } export declare class BBDT16CredentialBuilder extends CredentialBuilder { protected signMessageObject(messages: Object, secretKey: BBDT16MacSecretKey, labelOrParams: Uint8Array | BBDT16MacParams | undefined, encoder: Encoder): SignedMessages; protected newCredential(version: string, schema: CredentialSchema, subject: object, topLevelFields: Map, sig: BBDT16Mac, credStatus?: object): BBDT16Credential; protected applyDefaultProofMetadataIfNeeded(s: object): void; } //# sourceMappingURL=credential-builder.d.ts.map