From 06d388019d0c60a4704a76e2872c3a9d2175f13b Mon Sep 17 00:00:00 2001 From: Catalin Oancea Date: Fri, 10 Jan 2025 10:30:02 +0200 Subject: [PATCH] Add custom project creation test (#220) --- .../custom-projects-create.spec.ts | 972 +++++++++++++++++- 1 file changed, 948 insertions(+), 24 deletions(-) diff --git a/api/test/integration/custom-projects/custom-projects-create.spec.ts b/api/test/integration/custom-projects/custom-projects-create.spec.ts index 32723e6e..f2c13f6d 100644 --- a/api/test/integration/custom-projects/custom-projects-create.spec.ts +++ b/api/test/integration/custom-projects/custom-projects-create.spec.ts @@ -17,46 +17,943 @@ describe('Create Custom Projects - Setup', () => { await testManager.close(); }); - describe.skip('TEMPORAL, FOR REFERENCE', () => { - test('Should generate a conservation project input object that will be used for calculations', async () => { + describe('Conservation project', () => { + test('Should do the computations for a given custom conservation project', async () => { const response = await testManager .request() .post(customProjectContract.createCustomProject.path) .send({ - countryCode: 'IND', - activity: 'Restoration', + countryCode: 'IDN', + projectName: 'Project 1', ecosystem: 'Mangrove', - projectName: 'My custom project', - projectSizeHa: 1000, - initialCarbonPriceAssumption: 1000, + activity: 'Conservation', + projectSizeHa: 10000, carbonRevenuesToCover: 'Opex', - activityType: 'Planting', - plantingSuccessRate: 0.8, - parameters: { - lossRateUsed: 'National average', - sequestrationRateUsed: 'Tier 3 - Project-specific rate', - projectSpecificSequestrationRate: 100, - emissionFactorUsed: 'Tier 2 - Country-specific emission factor', + initialCarbonPriceAssumption: 20, + assumptions: { + verificationFrequency: 5, + baselineReassessmentFrequency: 10, + discountRate: 0.04, + restorationRate: 250, + carbonPriceIncrease: 0.015, + buffer: 0.2, + projectLength: 20, }, costInputs: { feasibilityAnalysis: 50000, - conservationPlanningAndAdmin: 166766.66666666666, - dataCollectionAndFieldCost: 26666.666666666668, - communityRepresentation: 71183.33333333333, + conservationPlanningAndAdmin: 166766.666666667, + dataCollectionAndFieldCost: 26666.6666666667, + communityRepresentation: 71183.3333333333, blueCarbonProjectPlanning: 100000, - establishingCarbonRights: 46666.666666666664, - financingCost: 0.05, + establishingCarbonRights: 46666.6666666667, validation: 50000, - implementationLaborHybrid: null, implementationLabor: 0, monitoring: 15000, maintenance: 0.0833, - carbonStandardFees: 0.2, communityBenefitSharingFund: 0.5, + carbonStandardFees: 0.2, baselineReassessment: 40000, mrv: 75000, longTermProjectOperatingCost: 26400, + financingCost: 0.05, + }, + parameters: { + lossRateUsed: 'Project specific', + emissionFactorUsed: 'Tier 2 - Country-specific emission factor', + projectSpecificEmission: 'One emission factor', + projectSpecificLossRate: -0.001, + projectSpecificEmissionFactor: 0, + emissionFactorAGB: 0, + emissionFactorSOC: 0, + }, + }); + expect(response.status).toBe(201); + + expect(response.body.data).toMatchObject({ + projectName: 'Project 1', + country: { + code: 'IDN', + name: 'Indonesia', + }, + totalCostNPV: 4020231.450302058, + totalCost: 6171619.083690509, + projectSize: 10000, + projectLength: 20, + ecosystem: 'Mangrove', + activity: 'Conservation', + output: { + lossRate: -0.001, + carbonRevenuesToCover: 'Opex', + initialCarbonPrice: 20, + emissionFactors: { + emissionFactor: null, + emissionFactorAgb: 355.4, + emissionFactorSoc: 71.9, + }, + totalProjectCost: { + total: { + total: 6171619.083690509, + capex: 1500616.6666666681, + opex: 4671002.417023841, + }, + npv: { + total: 4020231.450302058, + capex: 1416625.6362843285, + opex: 2603605.8140177294, + }, + }, + leftover: { + total: { + total: 6171619.083690509, + leftover: 2151387.633388451, + opex: 4671002.417023841, + }, + npv: { + total: 4020231.450302058, + leftover: 4020231.450302058, + opex: 2603605.8140177294, + }, }, + summary: { + '$/tCO2e (total cost, NPV)': 8.05597642444296, + '$/ha': 402.0231450302058, + 'NPV covering cost': 1075839.6137385801, + 'Leftover after OpEx / total cost': null, + 'IRR when priced to cover OpEx': 296337073626.0795, + 'IRR when priced to cover total cost': 24106068842.302074, + 'Total cost (NPV)': 4020231.450302058, + 'Capital expenditure (NPV)': 1416625.6362843285, + 'Operating expenditure (NPV)': 2603605.8140177294, + 'Credits issued': 186273.71625785634, + 'Total revenue (NPV)': 3679445.4277563095, + 'Total revenue (non-discounted)': 6771495.347544542, + 'Financing cost': 75030.83333333342, + 'Funding gap': 0, + 'Funding gap (NPV)': 0, + 'Funding gap per tCO2e (NPV)': 0, + 'Community benefit sharing fund': 0.5, + }, + costDetails: { + total: { + capitalExpenditure: 1500616.6666666681, + operationalExpenditure: 4671002.417023841, + totalCost: 3001233.3333333363, + feasibilityAnalysis: 50000, + conservationPlanningAndAdmin: 667066.666666668, + dataCollectionAndFieldCost: 80000.0000000001, + communityRepresentation: 213549.99999999988, + blueCarbonProjectPlanning: 300000, + establishingCarbonRights: 140000.00000000012, + validation: 50000, + implementationLabor: 0, + monitoring: 300000, + maintenance: 0, + communityBenefitSharingFund: 3385747.673772271, + carbonStandardFees: 37254.74325157127, + baselineReassessment: 120000, + mrv: 300000, + longTermProjectOperatingCost: 528000, + }, + npv: { + capitalExpenditure: 1416625.6362843285, + operationalExpenditure: 2603605.8140177294, + totalCost: 4020231.450302058, + feasibilityAnalysis: 50000, + conservationPlanningAndAdmin: 629559.347974512, + dataCollectionAndFieldCost: 76962.52465483244, + communityRepresentation: 197540.23004855093, + blueCarbonProjectPlanning: 288609.4674556213, + establishingCarbonRights: 129504.24821726605, + validation: 44449.81793354574, + implementationLabor: 0, + monitoring: 181226.25950738514, + maintenance: 0, + communityBenefitSharingFund: 1839722.7138781548, + carbonStandardFees: 20590.346864312083, + baselineReassessment: 75811.8711249392, + mrv: 167296.40590994002, + longTermProjectOperatingCost: 318958.2167329978, + }, + }, + yearlyBreakdown: [ + { + costName: 'feasibilityAnalysis', + totalCost: -50000, + totalNPV: -50000, + costValues: { + '0': 0, + '1': 0, + '2': 0, + '3': 0, + '4': 0, + '5': 0, + '6': 0, + '7': 0, + '8': 0, + '9': 0, + '10': 0, + '11': 0, + '12': 0, + '13': 0, + '14': 0, + '15': 0, + '16': 0, + '17': 0, + '18': 0, + '19': 0, + '20': 0, + '-4': -50000, + '-3': 0, + '-2': 0, + '-1': 0, + }, + }, + { + costName: 'conservationPlanningAndAdmin', + totalCost: -667066.666666668, + totalNPV: -629559.347974512, + costValues: { + '0': 0, + '1': 0, + '2': 0, + '3': 0, + '4': 0, + '5': 0, + '6': 0, + '7': 0, + '8': 0, + '9': 0, + '10': 0, + '11': 0, + '12': 0, + '13': 0, + '14': 0, + '15': 0, + '16': 0, + '17': 0, + '18': 0, + '19': 0, + '20': 0, + '-4': -166766.666666667, + '-3': -166766.666666667, + '-2': -166766.666666667, + '-1': -166766.666666667, + }, + }, + { + costName: 'dataCollectionAndFieldCost', + totalCost: -80000.0000000001, + totalNPV: -76962.52465483244, + costValues: { + '0': 0, + '1': 0, + '2': 0, + '3': 0, + '4': 0, + '5': 0, + '6': 0, + '7': 0, + '8': 0, + '9': 0, + '10': 0, + '11': 0, + '12': 0, + '13': 0, + '14': 0, + '15': 0, + '16': 0, + '17': 0, + '18': 0, + '19': 0, + '20': 0, + '-4': -26666.6666666667, + '-3': -26666.6666666667, + '-2': -26666.6666666667, + '-1': 0, + }, + }, + { + costName: 'blueCarbonProjectPlanning', + totalCost: -300000, + totalNPV: -288609.4674556213, + costValues: { + '0': 0, + '1': 0, + '2': 0, + '3': 0, + '4': 0, + '5': 0, + '6': 0, + '7': 0, + '8': 0, + '9': 0, + '10': 0, + '11': 0, + '12': 0, + '13': 0, + '14': 0, + '15': 0, + '16': 0, + '17': 0, + '18': 0, + '19': 0, + '20': 0, + '-4': -100000, + '-3': -100000, + '-2': -100000, + '-1': 0, + }, + }, + { + costName: 'communityRepresentation', + totalCost: -213549.99999999988, + totalNPV: -197540.23004855093, + costValues: { + '0': 0, + '1': 0, + '2': 0, + '3': 0, + '4': 0, + '5': 0, + '6': 0, + '7': 0, + '8': 0, + '9': 0, + '10': 0, + '11': 0, + '12': 0, + '13': 0, + '14': 0, + '15': 0, + '16': 0, + '17': 0, + '18': 0, + '19': 0, + '20': 0, + '-4': 0, + '-3': -71183.3333333333, + '-2': -71183.3333333333, + '-1': -71183.3333333333, + }, + }, + { + costName: 'establishingCarbonRights', + totalCost: -140000.00000000012, + totalNPV: -129504.24821726605, + costValues: { + '0': 0, + '1': 0, + '2': 0, + '3': 0, + '4': 0, + '5': 0, + '6': 0, + '7': 0, + '8': 0, + '9': 0, + '10': 0, + '11': 0, + '12': 0, + '13': 0, + '14': 0, + '15': 0, + '16': 0, + '17': 0, + '18': 0, + '19': 0, + '20': 0, + '-4': 0, + '-3': -46666.6666666667, + '-2': -46666.6666666667, + '-1': -46666.6666666667, + }, + }, + { + costName: 'validation', + totalCost: -50000, + totalNPV: -44449.81793354574, + costValues: { + '0': 0, + '1': 0, + '2': 0, + '3': 0, + '4': 0, + '5': 0, + '6': 0, + '7': 0, + '8': 0, + '9': 0, + '10': 0, + '11': 0, + '12': 0, + '13': 0, + '14': 0, + '15': 0, + '16': 0, + '17': 0, + '18': 0, + '19': 0, + '20': 0, + '-4': 0, + '-3': 0, + '-2': 0, + '-1': -50000, + }, + }, + { + costName: 'implementationLabor', + totalCost: 0, + totalNPV: 0, + costValues: { + '0': 0, + '1': 0, + '2': 0, + '3': 0, + '4': 0, + '5': 0, + '6': 0, + '7': 0, + '8': 0, + '9': 0, + '10': 0, + '11': 0, + '12': 0, + '13': 0, + '14': 0, + '15': 0, + '16': 0, + '17': 0, + '18': 0, + '19': 0, + '20': 0, + '-4': 0, + '-3': 0, + '-2': 0, + '-1': 0, + }, + }, + { + costName: 'monitoring', + totalCost: -300000, + totalNPV: -181226.25950738514, + costValues: { + '0': 0, + '1': -15000, + '2': -15000, + '3': -15000, + '4': -15000, + '5': -15000, + '6': -15000, + '7': -15000, + '8': -15000, + '9': -15000, + '10': -15000, + '11': -15000, + '12': -15000, + '13': -15000, + '14': -15000, + '15': -15000, + '16': -15000, + '17': -15000, + '18': -15000, + '19': -15000, + '20': -15000, + '-4': 0, + '-3': 0, + '-2': 0, + '-1': 0, + }, + }, + { + costName: 'maintenance', + totalCost: 0, + totalNPV: 0, + costValues: { + '0': 0, + '1': 0, + '2': 0, + '3': 0, + '4': 0, + '5': 0, + '6': 0, + '7': 0, + '8': 0, + '9': 0, + '10': 0, + '11': 0, + '12': 0, + '13': 0, + '14': 0, + '15': 0, + '16': 0, + '17': 0, + '18': 0, + '19': 0, + '20': 0, + '-4': 0, + '-3': 0, + '-2': 0, + '-1': 0, + }, + }, + { + costName: 'communityBenefitSharingFund', + totalCost: -3385747.673772271, + totalNPV: -1839722.7138781548, + costValues: { + '0': 0, + '1': -52768.632, + '2': -63129.7269985188, + '3': -73780.0687957903, + '4': -84725.8677115884, + '5': -95973.4533950057, + '6': -107529.2769805763, + '7': -119399.91328158088, + '8': -131592.06302169897, + '9': -144112.55510521441, + '10': -156968.3489267546, + '11': -170166.53672097257, + '12': -183714.3459529935, + '13': -197619.14175038147, + '14': -211888.42937701903, + '15': -226529.85675007536, + '16': -241551.21700023228, + '17': -256960.4510765775, + '18': -272765.65039606387, + '19': -288975.0595392029, + '20': -305597.07899202395, + '-4': 0, + '-3': 0, + '-2': 0, + '-1': 0, + }, + }, + { + costName: 'carbonStandardFees', + totalCost: -37254.74325157127, + totalNPV: -20590.346864312083, + costValues: { + '0': 0, + '1': -693.1840000000001, + '2': -817.0348159999849, + '3': -940.7617811839496, + '4': -1064.3650194029033, + '5': -1187.8446543833468, + '6': -1311.2008097290372, + '7': -1434.4336089192875, + '8': -1557.5431753104363, + '9': -1680.529632135062, + '10': -1803.3931025029142, + '11': -1926.1337094004846, + '12': -2048.751575690975, + '13': -2171.2468241153683, + '14': -2293.6195772911706, + '15': -2415.8699577140246, + '16': -2537.9980877560897, + '17': -2660.0040896684977, + '18': -2781.8880855788357, + '19': -2903.650197493283, + '20': -3025.290547295617, + '-4': 0, + '-3': 0, + '-2': 0, + '-1': 0, + }, + }, + { + costName: 'baselineReassessment', + totalCost: -120000, + totalNPV: -75811.8711249392, + costValues: { + '0': 0, + '1': 0, + '2': 0, + '3': 0, + '4': 0, + '5': 0, + '6': 0, + '7': 0, + '8': 0, + '9': 0, + '10': -40000, + '11': 0, + '12': 0, + '13': 0, + '14': 0, + '15': 0, + '16': 0, + '17': 0, + '18': 0, + '19': 0, + '20': -40000, + '-4': 0, + '-3': 0, + '-2': 0, + '-1': -40000, + }, + }, + { + costName: 'mrv', + totalCost: -300000, + totalNPV: -167296.40590994002, + costValues: { + '0': 0, + '1': 0, + '2': 0, + '3': 0, + '4': 0, + '5': -75000, + '6': 0, + '7': 0, + '8': 0, + '9': 0, + '10': -75000, + '11': 0, + '12': 0, + '13': 0, + '14': 0, + '15': -75000, + '16': 0, + '17': 0, + '18': 0, + '19': 0, + '20': -75000, + '-4': 0, + '-3': 0, + '-2': 0, + '-1': 0, + }, + }, + { + costName: 'longTermProjectOperatingCost', + totalCost: -528000, + totalNPV: -318958.2167329978, + costValues: { + '0': 0, + '1': -26400, + '2': -26400, + '3': -26400, + '4': -26400, + '5': -26400, + '6': -26400, + '7': -26400, + '8': -26400, + '9': -26400, + '10': -26400, + '11': -26400, + '12': -26400, + '13': -26400, + '14': -26400, + '15': -26400, + '16': -26400, + '17': -26400, + '18': -26400, + '19': -26400, + '20': -26400, + '-4': 0, + '-3': 0, + '-2': 0, + '-1': 0, + }, + }, + { + costName: 'opexTotalCostPlan', + totalCost: -4671002.417023841, + totalNPV: -2603605.8140177294, + costValues: { + '0': 0, + '1': -94861.81599999999, + '2': -105346.76181451879, + '3': -116120.83057697424, + '4': -127190.23273099131, + '5': -213561.29804938904, + '6': -150240.47779030533, + '7': -162234.3468905002, + '8': -174549.60619700942, + '9': -187193.08473734948, + '10': -315171.7420292575, + '11': -213492.67043037305, + '12': -227163.09752868448, + '13': -241190.38857449684, + '14': -255582.0489543102, + '15': -345345.72670778935, + '16': -285489.2150879884, + '17': -301020.45516624604, + '18': -316947.5384816427, + '19': -333278.70973669615, + '20': -465022.36953931954, + '-4': 0, + '-3': 0, + '-2': 0, + '-1': -40000, + }, + }, + { + costName: 'capexTotalCostPlan', + totalCost: -1500616.6666666681, + totalNPV: -1416625.6362843285, + costValues: { + '0': 0, + '1': 0, + '2': 0, + '3': 0, + '4': 0, + '5': 0, + '6': 0, + '7': 0, + '8': 0, + '9': 0, + '10': 0, + '11': 0, + '12': 0, + '13': 0, + '14': 0, + '15': 0, + '16': 0, + '17': 0, + '18': 0, + '19': 0, + '20': 0, + '-4': -343433.3333333337, + '-3': -411283.3333333337, + '-2': -411283.3333333337, + '-1': -334616.666666667, + }, + }, + { + costName: 'totalCostPlan', + totalCost: -6171619.08369051, + totalNPV: -4020231.4503020584, + costValues: { + '0': 0, + '1': -94861.81599999999, + '2': -105346.76181451879, + '3': -116120.83057697424, + '4': -127190.23273099131, + '5': -213561.29804938904, + '6': -150240.47779030533, + '7': -162234.3468905002, + '8': -174549.60619700942, + '9': -187193.08473734948, + '10': -315171.7420292575, + '11': -213492.67043037305, + '12': -227163.09752868448, + '13': -241190.38857449684, + '14': -255582.0489543102, + '15': -345345.72670778935, + '16': -285489.2150879884, + '17': -301020.45516624604, + '18': -316947.5384816427, + '19': -333278.70973669615, + '20': -465022.36953931954, + '-4': -343433.3333333337, + '-3': -411283.3333333337, + '-2': -411283.3333333337, + '-1': -374616.666666667, + }, + }, + { + costName: 'estimatedRevenuePlan', + totalCost: 6771495.347544542, + totalNPV: 3679445.4277563095, + costValues: { + '0': 0, + '1': 105537.264, + '2': 126259.4539970376, + '3': 147560.1375915806, + '4': 169451.7354231768, + '5': 191946.9067900114, + '6': 215058.5539611526, + '7': 238799.82656316177, + '8': 263184.12604339793, + '9': 288225.11021042883, + '10': 313936.6978535092, + '11': 340333.07344194513, + '12': 367428.691905987, + '13': 395238.28350076295, + '14': 423776.85875403805, + '15': 453059.7135001507, + '16': 483102.43400046456, + '17': 513920.902153155, + '18': 545531.3007921277, + '19': 577950.1190784058, + '20': 611194.1579840479, + '-4': 0, + '-3': 0, + '-2': 0, + '-1': 0, + }, + }, + { + costName: 'creditsIssuedPlan', + totalCost: 186273.71625785634, + totalNPV: 102951.73432156039, + costValues: { + '0': 0, + '1': 3465.92, + '2': 4085.174079999924, + '3': 4703.808905919747, + '4': 5321.825097014516, + '5': 5939.223271916733, + '6': 6556.004048645185, + '7': 7172.1680445964375, + '8': 7787.715876552181, + '9': 8402.64816067531, + '10': 9016.965512514571, + '11': 9630.668547002422, + '12': 10243.757878454875, + '13': 10856.23412057684, + '14': 11468.097886455853, + '15': 12079.349788570122, + '16': 12689.990438780447, + '17': 13300.020448342488, + '18': 13909.440427894178, + '19': 14518.250987466414, + '20': 15126.452736478084, + '-4': 0, + '-3': 0, + '-2': 0, + '-1': 0, + }, + }, + { + costName: 'cumulativeNetIncomePlan', + totalCost: 817876.6499772413, + totalNPV: 528307.1257344105, + costValues: { + '0': 0, + '1': 35559.85434683659, + '2': 35559.85434683659, + '3': 35559.85434683659, + '4': 35559.85434683659, + '5': 35559.85434683659, + '6': 35559.85434683659, + '7': 35559.85434683659, + '8': 35559.85434683659, + '9': 35559.85434683659, + '10': 35559.85434683659, + '11': 35559.85434683659, + '12': 35559.85434683659, + '13': 35559.85434683659, + '14': 35559.85434683659, + '15': 35559.85434683659, + '16': 35559.85434683659, + '17': 35559.85434683659, + '18': 35559.85434683659, + '19': 35559.85434683659, + '20': 35559.85434683659, + '-4': 0, + '-3': 35559.85434683659, + '-2': 35559.85434683659, + '-1': 35559.85434683659, + }, + }, + { + costName: 'cumulativeNetIncomeCapexOpex', + totalCost: 41642666.284516804, + totalNPV: 27020657.89535345, + costValues: { + '0': 0, + '1': 1795618.8239644987, + '2': 1795618.8239644987, + '3': 1795618.8239644987, + '4': 1795618.8239644987, + '5': 1795618.8239644987, + '6': 1795618.8239644987, + '7': 1795618.8239644987, + '8': 1795618.8239644987, + '9': 1795618.8239644987, + '10': 1795618.8239644987, + '11': 1795618.8239644987, + '12': 1795618.8239644987, + '13': 1795618.8239644987, + '14': 1795618.8239644987, + '15': 1795618.8239644987, + '16': 1795618.8239644987, + '17': 1795618.8239644987, + '18': 1795618.8239644987, + '19': 1795618.8239644987, + '20': 1795618.8239644987, + '-4': 343433.3333333337, + '-3': 1795618.8239644987, + '-2': 1795618.8239644987, + '-1': 1795618.8239644987, + }, + }, + { + costName: 'annualNetCashFlow', + totalCost: 12943114.431235053, + totalNPV: 7699676.878058367, + costValues: { + '0': 0, + '1': 200399.08, + '2': 231606.21581155638, + '3': 263680.9681685548, + '4': 296641.9681541681, + '5': 405508.2048394004, + '6': 365299.03175145795, + '7': 401034.17345366196, + '8': 437733.7322404074, + '9': 475418.1949477783, + '10': 629108.4398827667, + '11': 553825.7438723182, + '12': 594591.7894346714, + '13': 636428.6720752597, + '14': 679358.9077083482, + '15': 798405.4402079401, + '16': 768591.649088453, + '17': 814941.3573194011, + '18': 862478.8392737705, + '19': 911228.8288151019, + '20': 1076216.5275233674, + '-4': 343433.3333333337, + '-3': 411283.3333333337, + '-2': 411283.3333333337, + '-1': 374616.666666667, + }, + }, + { + costName: 'annualNetIncome', + totalCost: 11442497.764568385, + totalNPV: 6283051.241774039, + costValues: { + '0': 0, + '1': 200399.08, + '2': 231606.21581155638, + '3': 263680.9681685548, + '4': 296641.9681541681, + '5': 405508.2048394004, + '6': 365299.03175145795, + '7': 401034.17345366196, + '8': 437733.7322404074, + '9': 475418.1949477783, + '10': 629108.4398827667, + '11': 553825.7438723182, + '12': 594591.7894346714, + '13': 636428.6720752597, + '14': 679358.9077083482, + '15': 798405.4402079401, + '16': 768591.649088453, + '17': 814941.3573194011, + '18': 862478.8392737705, + '19': 911228.8288151019, + '20': 1076216.5275233674, + '-4': 0, + '-3': 0, + '-2': 0, + '-1': 40000, + }, + }, + ], + }, + input: { + countryCode: 'IDN', + projectName: 'Project 1', + ecosystem: 'Mangrove', + activity: 'Conservation', + projectSizeHa: 10000, + carbonRevenuesToCover: 'Opex', + initialCarbonPriceAssumption: 20, assumptions: { verificationFrequency: 5, baselineReassessmentFrequency: 10, @@ -66,9 +963,36 @@ describe('Create Custom Projects - Setup', () => { buffer: 0.2, projectLength: 20, }, - }); - // console.log(response); - // TODO: Write tests for cost calculations + costInputs: { + feasibilityAnalysis: 50000, + conservationPlanningAndAdmin: 166766.666666667, + dataCollectionAndFieldCost: 26666.6666666667, + communityRepresentation: 71183.3333333333, + blueCarbonProjectPlanning: 100000, + establishingCarbonRights: 46666.6666666667, + validation: 50000, + implementationLabor: 0, + monitoring: 15000, + maintenance: 0.0833, + communityBenefitSharingFund: 0.5, + carbonStandardFees: 0.2, + baselineReassessment: 40000, + mrv: 75000, + longTermProjectOperatingCost: 26400, + financingCost: 0.05, + }, + parameters: { + lossRateUsed: 'Project specific', + emissionFactorUsed: 'Tier 2 - Country-specific emission factor', + projectSpecificEmission: 'One emission factor', + projectSpecificLossRate: -0.001, + projectSpecificEmissionFactor: 0, + emissionFactorAGB: 0, + emissionFactorSOC: 0, + ecosystem: 'Mangrove', + }, + }, + }); }); }); });