@pact-toolbox/signers
Version:
96 lines (95 loc) • 5.87 kB
text/typescript
import { Address, ReadonlyUint8Array, SignatureBytes } from "@pact-toolbox/crypto";
import { PactCommand, PartiallySignedTransaction, SignedTransaction, TransactionFullSig, TransactionSig } from "@pact-toolbox/types";
//#region src/types.d.ts
type SignatureDictionary = Readonly<Record<Address, SignatureBytes>>;
type BaseSignerConfig = Readonly<{
abortSignal?: AbortSignal;
}>;
interface BaseTransactionSignerConfig extends BaseSignerConfig {}
//#endregion
//#region src/command-signer.d.ts
type PactCommandSignerConfig = BaseTransactionSignerConfig;
/** Defines a signer capable of signing transactions. */
type PactCommandSigner<TAddress extends string = string> = Readonly<{
address: Address<TAddress>;
signPactCommands(commands: PactCommand[]): Promise<PartiallySignedTransaction[]>;
}>;
/** Checks whether the provided value implements the {@link PactCommandSigner} interface. */
declare function isPactCommandSigner<TAddress extends string>(value: {
[key: string]: unknown;
address: Address<TAddress>;
}): value is PactCommandSigner<TAddress>;
/** Asserts that the provided value implements the {@link PactCommandSigner} interface. */
declare function assertIsPactCommandSigner<TAddress extends string>(value: {
[key: string]: unknown;
address: Address<TAddress>;
}): asserts value is PactCommandSigner<TAddress>;
// Function to sign a PactCommand
declare function partiallySignPactCommand(keyPairs: CryptoKeyPair[], command: PactCommand): Promise<PartiallySignedTransaction>;
declare function isTransactionFullSig(sig: TransactionSig): sig is TransactionFullSig;
declare function isFullySignedTransaction(transaction: unknown): transaction is SignedTransaction;
declare function finalizeTransaction(transaction: PartiallySignedTransaction): SignedTransaction;
//#endregion
//#region src/signable-message.d.ts
/** Defines a message that needs signing and its current set of signatures if any. */
type SignableMessage = Readonly<{
content: Uint8Array;
signatures: SignatureDictionary;
}>;
/**
* Creates a signable message from a provided content.
* If a string is provided, it will be UTF-8 encoded.
*/
declare function createSignableMessage(content: Uint8Array | string, signatures?: SignatureDictionary): SignableMessage;
//#endregion
//#region src/message-signer.d.ts
type MessageSignerConfig = BaseSignerConfig;
/** Defines a signer capable of signing messages. */
type MessageSigner<TAddress extends string = string> = Readonly<{
address: Address<TAddress>;
signMessages(messages: readonly SignableMessage[], config?: MessageSignerConfig): Promise<readonly SignatureDictionary[]>;
}>;
/** Checks whether the provided value implements the {@link MessageSigner} interface. */
declare function isMessageSigner<TAddress extends string>(value: {
[key: string]: unknown;
address: Address<TAddress>;
}): value is MessageSigner<TAddress>;
/** Asserts that the provided value implements the {@link MessageSigner} interface. */
declare function assertIsMessageSigner<TAddress extends string>(value: {
[key: string]: unknown;
address: Address<TAddress>;
}): asserts value is MessageSigner<TAddress>;
//#endregion
//#region src/keypair-signer.d.ts
/** Defines a signer capable of signing messages and transactions using a CryptoKeyPair. */
type KeyPairSigner<TAddress extends string = string> = MessageSigner<TAddress> & PactCommandSigner<TAddress> & {
keyPair: CryptoKeyPair;
};
/** Checks whether the provided value implements the {@link KeyPairSigner} interface. */
declare function isKeyPairSigner<TAddress extends string>(value: {
[key: string]: unknown;
address: Address<TAddress>;
}): value is KeyPairSigner<TAddress>;
/** Asserts that the provided value implements the {@link KeyPairSigner} interface. */
declare function assertIsKeyPairSigner<TAddress extends string>(value: {
[key: string]: unknown;
address: Address<TAddress>;
}): asserts value is KeyPairSigner<TAddress>;
/** Creates a KeyPairSigner from the provided Crypto KeyPair. */
declare function createSignerFromKeyPair(keyPair: CryptoKeyPair): Promise<KeyPairSigner>;
/** Securely generates a signer capable of signing messages and transactions using a Crypto KeyPair. */
declare function generateKeyPairSigner(): Promise<KeyPairSigner>;
/** Creates a signer capable of signing messages and transactions using the 64 bytes of a KeyPair. */
declare function createKeyPairSignerFromBytes(bytes: ReadonlyUint8Array, extractable?: boolean): Promise<KeyPairSigner>;
/** Creates a signer capable of signing messages and transactions using the 32 bytes of a private key. */
declare function createKeyPairSignerFromPrivateKeyBytes(bytes: ReadonlyUint8Array, extractable?: boolean): Promise<KeyPairSigner>;
declare function createKeyPairSignerFromBase16PrivateKey(privateKey: string, extractable?: boolean): Promise<KeyPairSigner>;
//#endregion
//#region src/noop.d.ts
/** Defines a no-operation signer that pretends to partially sign messages and transactions. */
type NoopSigner<TAddress extends string = string> = MessageSigner<TAddress> & PactCommandSigner<TAddress>;
/** Creates a NoopSigner from the provided Address. */
declare function createNoopSigner(address: Address): NoopSigner;
//#endregion
export { BaseSignerConfig, BaseTransactionSignerConfig, KeyPairSigner, MessageSigner, MessageSignerConfig, NoopSigner, PactCommandSigner, PactCommandSignerConfig, SignableMessage, SignatureDictionary, assertIsKeyPairSigner, assertIsMessageSigner, assertIsPactCommandSigner, createKeyPairSignerFromBase16PrivateKey, createKeyPairSignerFromBytes, createKeyPairSignerFromPrivateKeyBytes, createNoopSigner, createSignableMessage, createSignerFromKeyPair, finalizeTransaction, generateKeyPairSigner, isFullySignedTransaction, isKeyPairSigner, isMessageSigner, isPactCommandSigner, isTransactionFullSig, partiallySignPactCommand };
//# sourceMappingURL=index.d.mts.map