Sha256: 62af65a598cc3ec7aa423e1d7b8ca230558ec74a83d98510d9598be74a92cf11

Contents?: true

Size: 1.42 KB

Versions: 1

Compression:

Stored size: 1.42 KB

Contents

import {TRANSACTION_TYPE} from '@waves/ts-types'
import {
  defaultValue,
  getError,
  gte,
  ifElse,
  isArray,
  isEq,
  isNaturalNumberLike,
  isNaturalNumberOrZeroLike,
  isNumberLike,
  isPublicKey,
  isRecipient,
  isRequired,
  isString,
  isValidDataPair,
  isWavesOrAssetId,
  orEq,
  pipe,
  prop,
  validateByShema,
  validatePipe
} from './validators'


const invokeScheme = {
  type: isEq(TRANSACTION_TYPE.INVOKE_SCRIPT),
  senderPublicKey: isPublicKey,
  version: orEq([undefined, 1, 2]),
  dApp: isRecipient,

  call: ifElse(
      isRequired(false),
      defaultValue(true),
      validatePipe(
          pipe(prop('function'), isString),
          pipe(prop('function'), prop('length'), gte(0)),
          pipe(prop('args'), isArray),
          (data: Array<unknown>) => data.every(
              validatePipe(
                  isRequired(true),
                  isValidDataPair
              )
          )
      )
  ),
  payment: validatePipe(
      isArray,
      (data: Array<unknown>) => data.every(
          validatePipe(
              pipe(prop('amount'), isNumberLike),
              pipe(prop('assetId'), isWavesOrAssetId)
          )
      )
  ),
  fee: isNaturalNumberOrZeroLike,
  feeAssetId: isWavesOrAssetId,
  chainId: isNaturalNumberLike,
  timestamp: isNaturalNumberLike,
  proofs: ifElse(isArray, defaultValue(true), orEq([ undefined ])),
};


export const invokeValidator = validateByShema(invokeScheme, getError);

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
waves_lib-0.1.0 js/node_modules/@waves/waves-transactions/src/validators/invoke-script.ts