All files / src/api ContractFactory.ts

100% Statements 3/3
100% Branches 0/0
100% Functions 1/1
100% Lines 3/3

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29  1x                                                 1x 6x  
import { Config, Contract } from "@jonloucks/contracts-ts/api/Contract";
import { guardFunctions, OptionalType, RequiredType } from "@jonloucks/contracts-ts/api/Types";
 
/**
 * A Contract factory to bootstrapping Global Contracts and provide
 * Standalone services for special needs.
 */
export interface ContractFactory {
 
  /**
   * Create a new Contract
   * Note: Caller is responsible for invoking 'open' before using methods
   * Note: If caller does invoke 'open' it is required to invoke 'close' when appropriate
   * 
   * @param config the Contract configuration
   * @return the new Contract
   */
  createContract<T>(config?: OptionalType<Config<T>>): RequiredType<Contract<T>>;
}
 
/**
 * Type guard for ContractFactory
 * 
 * @param value the value to check
 * @return true if value is a ContractFactory, false otherwise
 */
export function guard(value: unknown): value is RequiredType<ContractFactory> {
  return guardFunctions(value, 'createContract');
}