diff --git a/src/keeper/contracts/ServiceAgreement.ts b/src/keeper/contracts/ServiceAgreement.ts index 396226e..ecfcf4c 100644 --- a/src/keeper/contracts/ServiceAgreement.ts +++ b/src/keeper/contracts/ServiceAgreement.ts @@ -11,13 +11,14 @@ export default class ServiceAgreement extends ContractBase { } public async setupAgreementTemplate(templateId: string, methodReflections: MethodReflection[], - dependencyMatrix: number[], name: any, fulfilmentOperator: number, + dependencyMatrix: number[], name: any, fulfillmentIndices: number[], + fulfillmentOperator: number, ownerAddress: string) : Promise { return this.send("setupAgreementTemplate", ownerAddress, [ templateId, methodReflections.map((r) => r.address), - methodReflections.map((r) => r.signature), dependencyMatrix, name, [0], fulfilmentOperator, + methodReflections.map((r) => r.signature), dependencyMatrix, name, fulfillmentIndices, fulfillmentOperator, ]) } diff --git a/src/ocean/ServiceAgreements/ServiceAgreementTemplate.ts b/src/ocean/ServiceAgreements/ServiceAgreementTemplate.ts index be39b27..a51c64e 100644 --- a/src/ocean/ServiceAgreements/ServiceAgreementTemplate.ts +++ b/src/ocean/ServiceAgreements/ServiceAgreementTemplate.ts @@ -34,6 +34,10 @@ export default class ServiceAgreementTemplate extends OceanBase { return this.compressDependencies(method.dependencies, method.dependencyTimeoutFlags) })) + const fulfillmentIndices: number[] = this.template.Methods + .map((method: Method, i: number) => method.isTerminalCondition ? i : undefined) + .filter((index: number) => index !== undefined) + const {serviceAgreement} = await Keeper.getInstance() const methodReflections = await this.getMethodReflections() @@ -57,7 +61,9 @@ export default class ServiceAgreementTemplate extends OceanBase { methodReflections, dependencyMatrix, Web3Provider.getWeb3().utils.fromAscii(this.template.templateName), - this.template.fulfilmentOperator, templateOwnerAddress) + fulfillmentIndices, + this.template.fulfillmentOperator, + templateOwnerAddress) const {serviceTemplateId, provider} = receipt.events.SetupAgreementTemplate.returnValues diff --git a/src/ocean/ServiceAgreements/Templates/TemplateBase.ts b/src/ocean/ServiceAgreements/Templates/TemplateBase.ts index 241d367..2f78ad4 100644 --- a/src/ocean/ServiceAgreements/Templates/TemplateBase.ts +++ b/src/ocean/ServiceAgreements/Templates/TemplateBase.ts @@ -3,6 +3,6 @@ import Method from "../Method" export default abstract class TemplateBase { public Methods: Method[] public templateName: string - public fulfilmentOperator: number = 0 + public fulfillmentOperator: number = 1 public id: string = "0x00000000000000000000000000000000000000000000000000000000000000" }