diff --git a/src/@types/DDO4/Credentials.ts b/src/@types/DDO4/Credentials.ts index c395510..91a06cd 100644 --- a/src/@types/DDO4/Credentials.ts +++ b/src/@types/DDO4/Credentials.ts @@ -1,21 +1,17 @@ -/* eslint-disable no-unused-vars */ -export enum CREDENTIALS_TYPES { - ADDRESS = 'address', - ACCESS_LIST = 'accessList', - POLICY_SERVER_SPECIFIC = 'PS-specific Type' // externally handled type -} +export type MATCH_RULES = 'any' | 'all'; -export const KNOWN_CREDENTIALS_TYPES = [ - CREDENTIALS_TYPES.ADDRESS, - CREDENTIALS_TYPES.ACCESS_LIST -]; +export interface CredentialAddressBased { + type: 'address'; + values: string[]; +} -export interface Credential { - type?: CREDENTIALS_TYPES; - values?: string[]; +export interface CredentialAccessListBased { + type: 'accessList'; + chainId: number; + accessList: string; } -export type MATCH_RULES = 'any' | 'all'; +export type Credential = CredentialAddressBased | CredentialAccessListBased; export interface Credentials { match_allow?: MATCH_RULES; // any => it's enough to have one rule matched, all => all allow rules should match, default: 'all' diff --git a/src/@types/DDO5/Credential.ts b/src/@types/DDO5/Credential.ts index f65736a..8b41211 100644 --- a/src/@types/DDO5/Credential.ts +++ b/src/@types/DDO5/Credential.ts @@ -1,37 +1,45 @@ -/* eslint-disable no-use-before-define */ - export type MATCH_RULES = 'any' | 'all'; -export interface Credential { - match_allow?: MATCH_RULES; // any => it's enough to have one rule matched, all => all allow rules should match, default: 'all' - match_deny?: MATCH_RULES; // same pattern as above, default is 'any' - allow?: (CredentialAddressBased | CredentialPolicyBased)[]; - deny?: (CredentialAddressBased | CredentialPolicyBased)[]; -} export interface CredentialAddressBased { type: 'address'; values: string[]; } -export interface CredentialPolicyBased { - type: 'verifiableCredential'; - requestCredentials: RequestCredential[]; +export interface CredentialAccessListBased { + type: 'accessList'; + chainId: number; + accessList: string; } -export type RequestCredential = string | DetailedCredential; +export interface PolicyArgs { + type: string; +} +export interface PolicyDetail { + policy: string; + args: PolicyArgs; +} + +export type Policy = string | PolicyDetail; export interface DetailedCredential { credential?: string; policies?: Policy[]; } +export type RequestCredential = string | DetailedCredential; -export type Policy = string | PolicyDetail; - -export interface PolicyDetail { - policy: string; - args: PolicyArgs; +export interface CredentialPolicyBased { + type: 'verifiableCredential'; + requestCredentials: RequestCredential[]; } -export interface PolicyArgs { - type: string; +export type Credential = + | CredentialAddressBased + | CredentialAccessListBased + | CredentialPolicyBased; + +export interface Credentials { + match_allow?: MATCH_RULES; // any => it's enough to have one rule matched, all => all allow rules should match, default: 'all' + match_deny?: MATCH_RULES; // same pattern as above, default is 'any' + allow?: Credential[]; + deny?: Credential[]; } diff --git a/src/@types/DDO5/CredentialSubject.ts b/src/@types/DDO5/CredentialSubject.ts index 38a09e9..77eaaf9 100644 --- a/src/@types/DDO5/CredentialSubject.ts +++ b/src/@types/DDO5/CredentialSubject.ts @@ -1,6 +1,7 @@ import { Event } from './Event.js'; import { Metadata } from './Metadata.js'; import { Service } from './Service.js'; +import { Credential } from './Credential.js'; export interface CredentialSubject { id?: string; // DID: