diff --git a/src/ocean/ServiceAgreements/Event.ts b/src/ocean/ServiceAgreements/Event.ts new file mode 100644 index 0000000..4ba5249 --- /dev/null +++ b/src/ocean/ServiceAgreements/Event.ts @@ -0,0 +1,7 @@ +import EventHandler from "./EventHandler" + +export default class Event { + public name: string = "PaymentLocked" + public actorType: string = "publisher" + public handler: EventHandler +} diff --git a/src/ocean/ServiceAgreements/EventHandler.ts b/src/ocean/ServiceAgreements/EventHandler.ts new file mode 100644 index 0000000..978b855 --- /dev/null +++ b/src/ocean/ServiceAgreements/EventHandler.ts @@ -0,0 +1,5 @@ +export default class EventHandler { + public moduleName: string = "accessControl" + public functionName: string = "grantAccess" + public version: string = "0.1" +} diff --git a/src/ocean/ServiceAgreements/Method.ts b/src/ocean/ServiceAgreements/Method.ts index 1e31f46..9f4e169 100644 --- a/src/ocean/ServiceAgreements/Method.ts +++ b/src/ocean/ServiceAgreements/Method.ts @@ -1,3 +1,4 @@ +import Event from "./Event" import Parameter from "./Parameter" export default class Method { @@ -6,6 +7,7 @@ export default class Method { public methodName: string public timeout: number public parameters: Parameter[] + public events: Event[] public dependencies: string[] public dependencyTimeoutFlags: number[] public isTerminalCondition: boolean diff --git a/src/ocean/ServiceAgreements/Templates/Access.ts b/src/ocean/ServiceAgreements/Templates/Access.ts index 8c41126..0f92da5 100644 --- a/src/ocean/ServiceAgreements/Templates/Access.ts +++ b/src/ocean/ServiceAgreements/Templates/Access.ts @@ -1,4 +1,7 @@ +import Event from "../Event" +import EventHandler from "../EventHandler" import Method from "../Method" +import Parameter from "../Parameter" import TemplateBase from "./TemplateBase" export default class Access extends TemplateBase { @@ -15,11 +18,22 @@ export default class Access extends TemplateBase { { name: "assetId", type: "bytes32", - }, + } as Parameter, { name: "price", type: "uint256", - }, + } as Parameter, + ], + events: [ + { + name: "PaymentLocked", + actorType: "publisher", + handler: { + moduleName: "accessControl", + functionName: "grantAccess", + version: "0.1", + } as EventHandler, + } as Event, ], dependencies: [], dependencyTimeoutFlags: [], @@ -34,11 +48,31 @@ export default class Access extends TemplateBase { { name: "assetId", type: "bytes32", - }, + } as Parameter, { name: "documentKeyId", type: "bytes32", - }, + } as Parameter, + ], + events: [ + { + name: "AccessGranted", + actorType: "consumer", + handler: { + moduleName: "asset", + functionName: "consumeService", + version: "0.1", + } as EventHandler, + } as Event, + { + name: "AccessGranted", + actorType: "publisher", + handler: { + moduleName: "payment", + functionName: "releasePayment", + version: "0.1", + } as EventHandler, + } as Event, ], dependencies: ["lockPayment"], dependencyTimeoutFlags: [0], @@ -53,11 +87,22 @@ export default class Access extends TemplateBase { { name: "assetId", type: "bytes32", - }, + } as Parameter, { name: "price", type: "uint256", - }, + } as Parameter, + ], + events: [ + { + name: "PaymentReleased", + actorType: "publisher", + handler: { + moduleName: "serviceAgreement", + functionName: "fulfillAgreement", + version: "0.1", + } as EventHandler, + } as Event, ], dependencies: ["grantAccess"], dependencyTimeoutFlags: [0], @@ -72,11 +117,22 @@ export default class Access extends TemplateBase { { name: "assetId", type: "bytes32", - }, + } as Parameter, { name: "price", type: "uint256", - }, + } as Parameter, + ], + events: [ + { + name: "PaymentRefund", + actorType: "consumer", + handler: { + moduleName: "serviceAgreement", + functionName: "fulfillAgreement", + version: "0.1", + } as EventHandler, + } as Event, ], dependencies: ["lockPayment", "grantAccess"], dependencyTimeoutFlags: [0, 1],