UNPKG

@patchworkdev/common

Version:

Patchwork Development Kit

56 lines (55 loc) 2.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ContractStartGen = void 0; const types_1 = require("../../types"); const generator_1 = require("../generator"); const utils_1 = require("../utils"); class ContractStartGen { gen(schema) { let inheritance = this.getBaseInheritance(schema.features); if (schema.hasLiteRef()) { inheritance.push("PatchworkLiteRef"); } if (schema.features.some((feature) => feature === types_1.Feature.MINTABLE)) { inheritance.push("IPatchworkMintable"); } let out = `abstract contract ${(0, utils_1.cleanAndCapitalizeFirstLetter)(schema.name)}Generated is ${inheritance.join(", ")} {\n`; if (schema.hasLiteRef()) { out += `\n`; if (schema.liteRefArrayLength(0) == 0) { out += (0, generator_1.ind)(4, `error AlreadyLoaded();\nerror NotFound();\nerror StorageIntegrityError();\nerror UnsupportedMetadataId();\n`); } else if (schema.liteRefArrayLength(0) == 1) { out += (0, generator_1.ind)(4, `error NoReferenceSlotsAvailable();\nerror TooManyReferences();\nerror NoReference();\nerror UnsupportedMetadataId();\n`); } else { out += (0, generator_1.ind)(4, `error NoReferenceSlotsAvailable();\nerror TooManyReferences();\nerror NoReference();\nerror UnsupportedMetadataId();\nerror AlreadyHaveReferences();\n`); } } return out; } getBaseInheritance(features) { let inheritance = []; if (features.includes(types_1.Feature.PATCH)) { inheritance.push(features.includes(types_1.Feature.REVERSIBLE) ? `PatchworkReversiblePatch` : `PatchworkPatch`); } if (features.includes(types_1.Feature['1155PATCH'])) { inheritance.push(features.includes(types_1.Feature.REVERSIBLE) ? `PatchworkReversible1155Patch` : `Patchwork1155Patch`); } if (features.includes(types_1.Feature.ACCOUNTPATCH)) { inheritance.push(features.includes(types_1.Feature.REVERSIBLE) ? `PatchworkReversibleAccountPatch` : `PatchworkAccountPatch`); } if (features.includes(types_1.Feature.FRAGMENTMULTI)) { inheritance.push(`PatchworkFragmentMulti`); } if (features.includes(types_1.Feature.FRAGMENTSINGLE)) { inheritance.push(`PatchworkFragmentSingle`); } // If no specific feature is found, default to Patchwork721 if (inheritance.length === 0) { inheritance.push(`Patchwork721`); } return inheritance; } } exports.ContractStartGen = ContractStartGen;