@ew-did-registry/did-resolver-interface
Version:
The package resolve CRUD operations on DID Documents
126 lines (112 loc) • 3.09 kB
text/typescript
import { BigNumber } from 'ethers';
import {
IDIDDocument,
DIDAttribute,
IUpdateData,
DelegateTypes,
IPublicKey,
IServiceEndpoint,
IAuthentication,
PubKeyType,
DocumentSelector,
IDIDLogData,
} from './models';
export interface IResolver {
/**
* Constructor takes keys and resolver settings to create a new Resolver
* constructor(settings?: IResolverSettings);
*
* Private members:
* settings;
*/
/**
* Read method resolves the DID Document for the provided DID.
* Should not be confused with “read” method in DID Document Lite,
* which returns the required attribute from the DID Document.
*
* @param {string} did
* @returns {Promise<IDIDDocument>}
*/
read(did: string): Promise<IDIDDocument>;
/**
* Returns the current owner for certain DID.
* If DID document has not been created, did will be identical to address.
* After creation DID owner can be changed.
*
* @param {string} did
* @returns {Promise<string>}
*/
identityOwner(did: string): Promise<string>;
/**
* Checks if the delegate is present for a particular DID.
* Returns boolean.
*
* @param {string} identityDID
* @param {DelegateTypes} delegateType
* @param {string} delegateDID
* @returns {Promise<boolean>}
*/
validDelegate(
identityDID: string,
delegateType: DelegateTypes,
delegateDID: string
): Promise<boolean>;
readAttribute(
did: string,
selector: DocumentSelector
): Promise<IPublicKey | IServiceEndpoint | IAuthentication | undefined>;
readOwnerPubKey(did: string): Promise<string | undefined>;
/**
* Reads events starting from specified block
*
* @param block {number} - block to start reading from
*
* @returns - part of document along with last read block
*/
readFromBlock(did: string, topBlock: BigNumber): Promise<IDIDLogData>;
lastBlock(did: string): Promise<BigNumber>;
}
export interface IOperator extends IResolver {
/**
* Registers a DID-Document for a given DID, and defines the provided context.
*
* @param {string} did
* @param {string} context
* @returns {boolean}
*/
create(): Promise<boolean>;
/**
* Updates relevant attribute of the DID Document.
*
* @param {string} did
* @param { DIDAttribute } attribute
* @param { IUpdateData } value
* @param { number } validity
* @returns {boolean}
*/
update(
did: string,
attribute: DIDAttribute,
value: IUpdateData,
validity?: number | BigNumber
): Promise<BigNumber>;
/**
* Attempts to deactivate the DID Document for a given DID.
* Successful, if the transaction is accepted by the smart contract.
* Deactivation should be done by the owner of DID.
*
* @param {string} did
* @returns {boolean}
*/
deactivate(did: string): Promise<void>;
revokeDelegate(
did: string,
delegateType: PubKeyType,
delegateDID: string
): Promise<boolean>;
revokeAttribute(
did: string,
attributeType: DIDAttribute,
updateData: IUpdateData
): Promise<boolean>;
}