1
0
mirror of https://github.com/oceanprotocol-archive/squid-js.git synced 2024-02-02 15:31:51 +01:00
squid-js/src/keeper/contracts/ServiceAgreement.ts
2018-12-07 15:19:16 +01:00

56 lines
2.2 KiB
TypeScript

import {Receipt} from "web3-utils"
import MethodReflection from "../../models/MethodReflection"
import ContractBase from "./ContractBase"
export default class ServiceAgreement extends ContractBase {
public static async getInstance(): Promise<ServiceAgreement> {
const serviceAgreement: ServiceAgreement = new ServiceAgreement("ServiceAgreement")
await serviceAgreement.init()
return serviceAgreement
}
public async setupAgreementTemplate(templateId: string,
methodReflections: MethodReflection[],
dependencyMatrix: number[],
name: any,
fulfillmentIndices: number[],
fulfillmentOperator: number,
ownerAddress: string): Promise<Receipt> {
return this.send("setupAgreementTemplate", ownerAddress, [
templateId, methodReflections.map((r) => r.address),
methodReflections.map((r) => r.signature), dependencyMatrix, name, fulfillmentIndices,
fulfillmentOperator,
])
}
// todo get service agreement consumer
public async getTemplateStatus(templateId: string) {
return this.call("getTemplateStatus", [templateId])
}
public async getTemplateOwner(templateId: string) {
return this.call("getTemplateOwner", [templateId])
}
public async getAgreementStatus(serviceDefinitionId: string) {
return this.call("getAgreementStatus", [serviceDefinitionId])
}
public async executeAgreement(serviceAgreementTemplateId: string, serviceAgreementSignatureHash: string,
consumerAddress: string, valueHashes: string[], timeoutValues: number[],
serviceAgreementId: string, did: string, publisherAddress: string):
Promise<Receipt> {
return this.send("executeAgreement", publisherAddress, [
serviceAgreementTemplateId, serviceAgreementSignatureHash, consumerAddress, valueHashes,
timeoutValues, serviceAgreementId, "0x" + did.replace("did:op:", ""),
])
}
}