UNPKG

@ixily/activ

Version:

Alpha Capture Trade Idea Verification. Blockchain ownership proven trade ideas and strategies.

529 lines 21.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateBasicEncryptedIdea = exports.validateBasicIdea = void 0; const __1 = require("../../"); const validatePricingInfo = (ideaComplete) => { const idea = ideaComplete.idea; if (idea.priceInfo === undefined) { return 'The idea must have priceInfo.'; } const priceInfo = idea.priceInfo; if (!Array.isArray(priceInfo.response)) { return 'The idea must have priceInfo response as array.'; } for (const resp of priceInfo.response) { if (typeof resp !== 'string') { return 'The idea must have priceInfo response as array of strings.'; } } if (priceInfo.keys === undefined) { return 'The idea must have priceInfo keys.'; } if (!Array.isArray(priceInfo.keys)) { return 'The idea must have priceInfo keys as array.'; } for (const key of priceInfo.keys) { if (!Array.isArray(key)) { return 'The idea must have priceInfo keys as array of arrays.'; } if (key.length !== 2) { return 'The idea must have priceInfo keys as array of arrays of length 2.'; } for (const k of key) { if (typeof k !== 'string') { return 'The idea must have priceInfo keys as array of arrays of strings.'; } } } if (priceInfo.price === undefined) { return 'The idea must have priceInfo price.'; } if (priceInfo.price.provider === undefined) { return 'The idea must have priceInfo price provider.'; } if (__1.CONTRACT_CONSTANTS.PRICING_PROVIDER.find((one) => one === priceInfo.price.provider) === undefined) { return 'The idea must have valid priceInfo price provider.'; } if (priceInfo.price.symbol === undefined) { return 'The idea must have priceInfo price symbol.'; } if (typeof priceInfo.price.symbol !== 'string') { return 'The idea must have priceInfo price symbol as string.'; } if (priceInfo.price.timestamp === undefined) { return 'The idea must have priceInfo price timestamp.'; } if (typeof priceInfo.price.timestamp !== 'number') { return 'The idea must have priceInfo price timestamp as number.'; } if (priceInfo.price.ask === undefined && priceInfo.price.bid !== undefined) { return 'The idea must have priceInfo price ask if it has bid.'; } if (priceInfo.price.ask !== undefined && priceInfo.price.bid === undefined) { return 'The idea must have priceInfo price bid if it has ask.'; } if (priceInfo.price.globalPrice === undefined) { return 'The idea must have priceInfo price globalPrice.'; } if (typeof priceInfo.price.globalPrice !== 'number') { return 'The idea must have priceInfo price globalPrice as number.'; } if (priceInfo.price.globalPrice <= 0) { return 'The idea must have priceInfo price globalPrice greater than 0.'; } return undefined; }; const validateBasicIdeaTrade = (ideaComplete) => { const idea = ideaComplete.idea; const strategyType = ideaComplete.strategy.ordersType; if (idea.kind === undefined) { return 'The idea must have kind.'; } if (idea.kind === 'open') { if (idea.adjustment !== undefined) { return 'The idea must not have adjustment.'; } if (idea.trade === undefined) { return 'The idea must have trade.'; } if (strategyType === 'ALLOCATION') { if (idea.trade.allocation === undefined) { return 'The idea must have trade allocation.'; } if (typeof idea.trade.allocation !== 'number') { return 'The idea must have trade allocation as number.'; } if (idea.trade.allocation <= 0) { return 'The idea must have trade allocation greater than 0.'; } if (idea.trade.allocation > 100) { return 'The idea must have trade allocation less or equal to 100.'; } } else { if (idea.trade.conviction === undefined) { return 'The idea must have trade conviction.'; } if (typeof idea.trade.conviction !== 'number') { return 'The idea must have trade conviction as number.'; } if (idea.trade.conviction <= 0) { return 'The idea must have trade conviction greater than 0.'; } if (idea.trade.conviction > 100) { return 'The idea must have trade conviction less or equal to 100.'; } } } else if (idea.kind === 'adjust') { if (idea.adjustment === undefined) { return 'The idea must have adjustment object'; } if (idea.adjustment.kind === 'decrease') { if (idea.adjustment.percentage <= 0) { return 'The middle stages of the chained idea must have positive decrease.'; } else if (idea.adjustment.percentage >= 100) { return 'The middle stages of the chained idea must have decrease less than 100.'; } } else if (idea.adjustment.kind === 'increase') { if (strategyType === 'ALLOCATION') { if (idea.adjustment.percentage < 0) { return 'The adjustment idea must have positive increase or zero for allocation.'; } } else { if (idea.adjustment.percentage <= 0) { return 'The adjustment idea must have positive increase.'; } } } else { return 'The idea must have adjustment kind as increase or decrease.'; } } else if (idea.kind === 'close') { if (idea.adjustment !== undefined) { return 'The idea must not have adjustment.'; } if (idea.trade !== undefined) { if (strategyType === 'ALLOCATION') { if (idea.trade.allocation === undefined) { return 'The idea must have trade allocation.'; } if (typeof idea.trade.allocation !== 'number') { return 'The idea must have trade allocation as number.'; } if (idea.trade.allocation !== 0) { return 'The idea must have trade allocation 0 when closing.'; } } else { if (idea.trade.conviction === undefined) { return 'The idea must have trade conviction.'; } if (typeof idea.trade.conviction !== 'number') { return 'The idea must have trade conviction as number.'; } if (idea.trade.conviction <= 0) { return 'The idea must have trade conviction greater than 0.'; } if (idea.trade.conviction > 100) { return 'The idea must have trade conviction less or equal to 100.'; } } } } else { return 'The idea must have kind as open, close or adjust.'; } if (idea.asset === undefined) { return 'The idea must have asset.'; } if (idea.asset.ticker === undefined) { return 'The idea must have asset ticker.'; } if (typeof idea.asset.ticker !== 'string') { return 'The idea must have asset ticker as string.'; } if (idea.asset.ticker.trim().length === 0) { return 'The idea must have asset ticker as non empty string.'; } if (idea.asset.description === undefined) { return 'The idea must have asset description.'; } if (typeof idea.asset.description !== 'string') { return 'The idea must have asset description as string.'; } if (idea.asset.description.trim().length === 0) { return 'The idea must have asset description as non empty string.'; } if (idea.notes === undefined) { return 'The idea must have notes.'; } if (idea.notes.commentary === undefined) { return 'The idea must have notes commentary.'; } if (typeof idea.notes.commentary !== 'string') { return 'The idea must have notes commentary as string.'; } if (idea.notes.commentary.trim().length === 0) { return 'The idea must have notes commentary as non empty string.'; } }; const validateBasicIdeaRoot = (ideaComplete, preMint = false) => { if (!preMint) { if (ideaComplete.nftId === undefined) { return 'The idea must have nftId.'; } if (typeof ideaComplete.nftId !== 'number') { return 'The idea must have nftId as number.'; } if (ideaComplete.nftId <= 0) { return 'The idea must have nftId greater than 0.'; } } if (ideaComplete.ideaSha512Hash === undefined) { return 'The idea must have ideaSha512Hash'; } if (typeof ideaComplete.ideaSha512Hash !== 'string') { return 'The idea must have ideaSha512Hash as string'; } if (ideaComplete.ideaSha512Hash.trim().length === 0) { return 'The idea must have ideaSha512Hash as non empty string'; } if (ideaComplete.pricing === undefined) { return 'The idea must have pricing'; } if (typeof ideaComplete.pricing.provider !== 'string') { return 'The idea must have pricing provider as string'; } if (__1.CONTRACT_CONSTANTS.PRICING_PROVIDER.find((one) => one === ideaComplete.pricing.provider) === undefined) { return 'The idea must have valid pricing provider'; } }; const validateBasicIdeaContent = (ideaComplete, preMint = false) => { const idea = ideaComplete.idea; if (ideaComplete.content === undefined) { return 'The idea must have content'; } if (ideaComplete.content.reference === undefined) { return 'The idea must have content reference'; } if (typeof ideaComplete.content.reference !== 'string') { return 'The idea must have content reference as string'; } if (ideaComplete.content.reference.trim().length === 0) { return 'The idea must have content reference as non empty string'; } if (!preMint) { if (ideaComplete.content.ideaNftId === undefined) { return 'The idea must have content ideaNftId'; } if (ideaComplete.content.ideaNftId !== ideaComplete.nftId) { return 'The idea must have content ideaNftId equal to nftId'; } if (ideaComplete.content.ideaStageKey === undefined) { return 'The idea must have content ideaStageKey'; } if (typeof ideaComplete.content.ideaStageKey !== 'number') { return 'The idea must have content ideaStageKey as number'; } if (ideaComplete.content.ideaStageKey < 0) { return 'The idea must have content ideaStageKey greater or equal 0'; } } if (!preMint || idea.kind !== 'open') { if (ideaComplete.content.ideaKey === undefined) { return 'The idea must have content ideaKey'; } if (typeof ideaComplete.content.ideaKey !== 'number') { return 'The idea must have content ideaKey as number'; } } }; const validateBasicEncryptedIdeaContent = (ideaComplete, preMint = false) => { if (ideaComplete.content === undefined) { return 'The idea must have content'; } if (ideaComplete.content.reference === undefined) { return 'The idea must have content reference'; } if (typeof ideaComplete.content.reference !== 'string') { return 'The idea must have content reference as string'; } if (ideaComplete.content.reference.trim().length === 0) { return 'The idea must have content reference as non empty string'; } if (!preMint) { if (ideaComplete.content.ideaNftId === undefined) { return 'The idea must have content ideaNftId'; } if (ideaComplete.content.ideaNftId !== ideaComplete.nftId) { return 'The idea must have content ideaNftId equal to nftId'; } if (ideaComplete.content.ideaStageKey === undefined) { return 'The idea must have content ideaStageKey'; } if (typeof ideaComplete.content.ideaStageKey !== 'number') { return 'The idea must have content ideaStageKey as number'; } if (ideaComplete.content.ideaStageKey < 0) { return 'The idea must have content ideaStageKey greater or equal 0'; } } if (!preMint) { if (ideaComplete.content.ideaKey === undefined) { return 'The idea must have content ideaKey'; } if (typeof ideaComplete.content.ideaKey !== 'number') { return 'The idea must have content ideaKey as number'; } } }; const validateBasicIdeaCreator = (ideaComplete) => { if (ideaComplete.creator === undefined) { return 'The idea must have creator'; } if (ideaComplete.creator.name === undefined) { return 'The idea must have creator name'; } if (typeof ideaComplete.creator.name !== 'string') { return 'The idea must have creator name as string'; } if (ideaComplete.creator.name.trim().length === 0) { return 'The idea must have creator name as non empty string'; } if (ideaComplete.creator.company !== undefined) { if (typeof ideaComplete.creator.company !== 'string') { return 'The idea must have creator company as string'; } if (ideaComplete.creator.company.trim().length === 0) { return 'The idea must have creator company as non empty string'; } } if (ideaComplete.creator.url !== undefined) { if (typeof ideaComplete.creator.url !== 'string') { return 'The idea must have creator url as string'; } if (ideaComplete.creator.url.trim().length === 0) { return 'The idea must have creator url as non empty string'; } } if (ideaComplete.creator.companyLogo?.cid !== undefined) { if (typeof ideaComplete.creator.companyLogo.cid !== 'string') { return 'The idea must have creator companyLogo as string'; } } // if (ideaComplete.creator.backgroundImage !== undefined) { // if (typeof ideaComplete.creator.backgroundImage !== 'string') { // return 'The idea must have creator backgroundImage as string' // } // } if (ideaComplete.creator.walletAddress === undefined) { return 'The idea must have creator walletAddress'; } if (typeof ideaComplete.creator.walletAddress !== 'string') { return 'The idea must have creator walletAddress as string'; } if (ideaComplete.creator.walletAddress.trim().length === 0) { return 'The idea must have creator walletAddress as non empty string'; } return undefined; }; const validateBasicIdeaStrategy = (ideaComplete, cachedStrategyState, preMint = false) => { if (ideaComplete.strategy === undefined) { return 'The idea must have strategy'; } if (ideaComplete.strategy.reference === undefined) { return 'The idea must have strategy reference'; } if (ideaComplete.strategy.uniqueKey === undefined) { return 'The idea must have strategy uniqueKey'; } if (typeof ideaComplete.strategy.reference !== 'string') { return 'The idea must have strategy reference as string'; } if (typeof ideaComplete.strategy.uniqueKey !== 'string') { return 'The idea must have strategy uniqueKey as string'; } if (ideaComplete.strategy.reference.trim().length === 0) { return 'The idea must have strategy reference as non empty string'; } if (ideaComplete.strategy.name === undefined) { return 'The idea must have strategy name'; } if (typeof ideaComplete.strategy.name !== 'string') { return 'The idea must have strategy name as string'; } if (ideaComplete.strategy.name.trim().length === 0) { return 'The idea must have strategy name as non empty string'; } if (ideaComplete.strategy.description === undefined) { return 'The idea must have strategy description'; } if (typeof ideaComplete.strategy.description !== 'string') { return 'The idea must have strategy description as string'; } if (ideaComplete.strategy.description.trim().length === 0) { return 'The idea must have strategy description as non empty string'; } if (preMint) { if (ideaComplete.strategy.createdAt === undefined) { ideaComplete.strategy.createdAt = cachedStrategyState.strategy.createdAt; } if (ideaComplete.strategy.changedAt === undefined) { ideaComplete.strategy.changedAt = cachedStrategyState.strategy.changedAt; } } else { if (ideaComplete.strategy.createdAt === undefined) { return 'The idea must have strategy createdAt'; } if (typeof ideaComplete.strategy.createdAt !== 'number') { return 'The idea must have strategy createdAt as number'; } if (ideaComplete.strategy.changedAt === undefined) { return 'The idea must have strategy changedAt'; } if (typeof ideaComplete.strategy.changedAt !== 'number') { return 'The idea must have strategy changedAt as number'; } if (ideaComplete.strategy.image?.cid !== undefined) { if (typeof ideaComplete.strategy.image.cid !== 'string') { return 'The idea must have strategy image as string'; } } } if (ideaComplete.strategy.externalLink !== undefined) { if (typeof ideaComplete.strategy.externalLink !== 'string') { return 'The idea must have strategy externalLink as string'; } } if (ideaComplete.strategy.ordersType === undefined) { if (preMint) { ideaComplete.strategy.ordersType = cachedStrategyState.strategy.ordersType; } else { return 'The idea must have strategy ordersType'; } } if (typeof ideaComplete.strategy.ordersType !== 'string') { return 'The idea must have strategy ordersType as string'; } if (ideaComplete.strategy.ordersType !== 'ALLOCATION' && ideaComplete.strategy.ordersType !== 'STANDARD') { return 'The idea must have strategy ordersType as ALLOCATION or STANDARD'; } if (cachedStrategyState.strategy.ordersType !== undefined) { if (ideaComplete.strategy.ordersType !== cachedStrategyState.strategy.ordersType) { return ('The idea must have strategy ordersType equal to cached strategy ordersType ' + cachedStrategyState.strategy.ordersType + '.'); } } }; const validateBasicIdea = (ideaComplete, cachedStrategyState, preMint = false) => { let violation = undefined; // nftId // ideaShar512Hash // pricing violation = validateBasicIdeaRoot(ideaComplete, preMint); if (violation !== undefined) { return violation; } violation = validateBasicIdeaContent(ideaComplete, preMint); if (violation !== undefined) { return violation; } violation = validateBasicIdeaStrategy(ideaComplete, cachedStrategyState, preMint); if (violation !== undefined) { return violation; } violation = validateBasicIdeaCreator(ideaComplete); if (violation !== undefined) { return violation; } violation = validateBasicIdeaTrade(ideaComplete); if (violation !== undefined) { return violation; } violation = validatePricingInfo(ideaComplete); if (violation !== undefined) { return violation; } return undefined; }; exports.validateBasicIdea = validateBasicIdea; const validateBasicEncryptedIdea = (ideaComplete, cachedStrategyState, preMint = false) => { let violation = undefined; // nftId // ideaShar512Hash // pricing violation = validateBasicIdeaRoot(ideaComplete, preMint); if (violation !== undefined) { return violation; } violation = validateBasicEncryptedIdeaContent(ideaComplete, preMint); if (violation !== undefined) { return violation; } violation = validateBasicIdeaStrategy(ideaComplete, cachedStrategyState, preMint); if (violation !== undefined) { return violation; } violation = validateBasicIdeaCreator(ideaComplete); if (violation !== undefined) { return violation; } return undefined; }; exports.validateBasicEncryptedIdea = validateBasicEncryptedIdea; //# sourceMappingURL=basic-idea-validations.tools.js.map