@sphereon/ssi-sdk-web3.headless-provider
Version:
37 lines • 1.77 kB
TypeScript
import { Provider, TransactionRequest } from '@ethersproject/abstract-provider';
import { Deferrable } from '@ethersproject/properties';
import { IKey } from '@veramo/core';
import { ethers, Signer, TypedDataDomain, TypedDataField } from 'ethers';
import { IRequiredContext, TypedDataSigner } from './types';
export declare class EthersKMSSignerBuilder {
private context?;
private keyRef?;
private provider?;
withContext(context: IRequiredContext): this;
withKid(kid: string): this;
withKeyRef(keyRef: Pick<IKey, 'kid'> | string): this;
withProvider(provider: ethers.providers.Provider): this;
build(): EthersKMSSigner;
}
/**
* This is a Ethers signer that delegates back to the KMS for the actual signatures.
* This means we do not expose private keys and can use any Secp256k1 key stored in the KMS if we want
*
* Be aware that the provided KeyRef needs to belong to the respective KMS, as it will use a lookup for the key in the KMS to sign
*/
export declare class EthersKMSSigner extends Signer implements TypedDataSigner {
private readonly context;
private readonly keyRef;
constructor({ provider, context, keyRef }: {
provider?: ethers.providers.Provider;
context: IRequiredContext;
keyRef: Pick<IKey, 'kid'>;
});
getAddress(): Promise<string>;
signTransaction(transaction: Deferrable<TransactionRequest>): Promise<string>;
signRaw(message: string | Uint8Array): Promise<string>;
signMessage(message: string | Uint8Array): Promise<string>;
_signTypedData(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): Promise<string>;
connect(provider?: Provider): EthersKMSSigner;
}
//# sourceMappingURL=ethers-kms-signer.d.ts.map