Workflow class
constructor
constructor(signerOrProvider: ethers.providers.Provider | ethers.Signer)
构造函数接受 Signer 或者 Provider 实例。该类由 POB 实例化,可直接使用实例方法。
const pob = new POB(provider)pob.workflow.methodName();
create
创建工作流,issuer 使用。
函数签名
create<K extends keyof WorkflowTemplateRequest, P extends WorkflowTemplateRequest[K]>(    templateIndex: K,    SBT: SBTParams,    workflowTemplateData: P,    tasks: CommonTaskRequest[],  ): Promise<ContractTransaction>
如何调用
const pob = new POB(provider)// const params = [...]pob.workflow.create(...params)
Request
| 参数名称 | 类型 | 必选 | 简介 | 
|---|---|---|---|
| templateIndex | number | 是 | Workflow template index. | 
| SBT | SBTParams | 是 | Soulbound token params. | 
| workflowTemplateData | WorkflowParams | 是 | Workflow parmas. | 
| tasks | CommonTaskRequest[] | 是 | Tasks data. | 
SBTParams
| 参数名称 | 类型 | 必选 | 默认值 | 简介 | 
|---|---|---|---|---|
| name | string | 是 | Soulbound token(NFT) name, like Bored Ape Yacht Club. | |
| symbol | string | 是 | Soulbound token(NFT) symbol, like BAYC. | |
| defaultURI | string | 否 | Workflow parmas, like: ipfs://QmeSjSinHpPnmXmspMjwiXyN6zS4E9zccariGR3jxcaWtq. | |
| image | string | 否 | SBT NFT 图片 URL,如果没有配置 defaultURI,则必须设置该项。如果使用 IPFS,则需要配置 IPFS Schema 前缀,如:ipfs://QmeSjSinHpPnmXmspMjwiXyN6zS4E9zccariGR3jxcaWtq | |
| ... | any | 否 | 其他值,可参考 Opensea Metadata 规范。 | 
WorkflowParams
| 参数名称 | 类型 | 必选 | 默认值 | 简介 | 
|---|---|---|---|---|
| inOrder | boolean | 是 | 表示工作流下任务之间的关系,true 表示串行,false 表示并行。 | |
| minimumTasks | string | 否 | 如果 inOrder 为 false,则必须设置该值,表示并行情况下最低完成多少个任务工作流可以结束,正常可以设置为 task 的个数。 | |
| startTime | string | 是 | 工作流开始的时间戳,格林威治时间。 | |
| endTime | number | 否 | 0 | 工作流结束的时间戳,格林威治时间。如果是永久工作流,则需要设置为 0。 | 
| reviewer | string | 是 | 工作流的审批人 ERC20 地址。 | |
| rewardsToken | string | 否 | 工作流激励的 token address,用于 issuer 向 taker 支付的场景,和 feeToken 互逆。 | |
| feeReceiver | string | 否 | 工作流收费的接收人地址,用于 taker 向 issuer 支付的场景,和 rewardsToken 互逆。 | |
| feeToken | string | 否 | 工作流收费的 token address。 | |
| describe | object | 是 | 工作流的额外信息,根据规范,name, description, namespace 是必须的,其他参数取决于 Workflow 的模板要求,详情可查看 Workflow Template describe 字段。规范请查看 describe 规范 | 
Task
| 参数名称 | 类型 | 必选 | 默认值 | 简介 | 
|---|---|---|---|---|
| onlyOneWinner | boolean | 是 | 表示 Task 的激励是否只有一个人独享,true 表示是,false 表示由审批人决定。 | |
| taskIndex | string | 是 | taskIndex 为注册在 POB 协议中的 index,即 Task Template 的 index,可通过 pob.task.getTemplates() 获取。 | |
| reviewer | string | 是 | 表示该任务的审批人,建议设置为 issuer | |
| totalRewards | string | 否 | 该任务的奖励金额,用于 issuer 向 taker 支付的场景,和 feeAmount 互逆。 | |
| feeAmount | string | 否 | 该任务的收费金额,用于 taker 向 issuer 支付的场景,和 totalRewards 互逆。 | |
| deadline | number | 是 | 该任务的截止时间,不能大于等于 Workflow 的结束时间,如果 Workflow 为永久任务,则需要设置为 0。 | |
| describe | object | 是 | 任务的额外信息,根据规范,name, description, 是必须的,其他参数取决于 Task 的模板要求,详情可查看 Task Template describe 字段。规范请查看 describe 规范 | 
Response
该方法返回一个 Promise<ContractTransaction> 对象。
apply
报名工作流,对于 taker 而言,这是加入到一个工作流的前置条件,必须要先报名才可以进行后续工作。
函数签名:
apply(workflow: string): Promise<ContractTransaction>
如何调用
const pob = new POB(provider)pob.workflow.apply(workflow);
Request
| 参数名称 | 类型 | 必选 | 简介 | 
|---|---|---|---|
| workflow | number | 是 | 工作流合约地址。 | 
Response
该方法返回一个 Promise<ContractTransaction> 对象。
approve
审批工作流,reviewer 使用。只有当工作流下的任务已经达到要求,如果是串行工作流,则必须所有任务都要完成才可以审批;如果是并行工作流,则必须完成的任务数大于等于最小完成任务数(minimumTasks)才可以审批。协议会根据最后一个任务是否被审批来判断是否需要自动审批工作流,一般情况不需要人工审批。审批过后,taker 才可以领取 SBT。
函数签名:
approve(workflow: string, taker: string[]): Promise<ContractTransaction>
如何调用
const pob = new POB(provider)pob.workflow.approve("workflow contract address", ["taker1 address", "taker2 address"]);
Request
| 参数名称 | 类型 | 必选 | 简介 | 
|---|---|---|---|
| workflow | string | 是 | 工作流合约地址。 | 
| taker | string[] | 是 | 审批对象的钱包地址。 | 
Response
该方法返回一个 Promise<ContractTransaction> 对象。
close
结束工作流,issuer 使用。issuer 可以提前结束该工作流。
函数签名:
close(workflow: string): Promise<ContractTransaction>
如何调用
const pob = new POB(provider)pob.workflow.close("workflow contract address");
Request
| 参数名称 | 类型 | 必选 | 简介 | 
|---|---|---|---|
| workflow | string | 是 | 工作流合约地址。 | 
Response
该方法返回一个 Promise<ContractTransaction> 对象。
claimSBT
申领 SBT,taker 使用。只有当 taker 参与的工作流被审批后才可以申领。
函数签名:
claimSBT(workflow: string): Promise<ContractTransaction>
如何调用
const pob = new POB(provider)pob.workflow.claimSBT("workflow contract address");
Request
| 参数名称 | 类型 | 必选 | 简介 | 
|---|---|---|---|
| workflow | string | 是 | 工作流合约地址。 | 
Response
该方法返回一个 Promise<ContractTransaction> 对象。
getTemplate
获取指定工作流模板信息。
函数签名:
getTemplate(templateIndex: number): Promise<Response<WorkflowTemplate>>
如何调用
const pob = new POB(provider)pob.workflow.getTemplate(1);
Request
| 参数名称 | 类型 | 必选 | 默认值 | 简介 | 
|---|---|---|---|---|
| templateIndex | number | 是 | 模板索引 | 
Response
该方法返回一个 Promise<Response<WorkflowTemplate>> 对象。
WorkflowTemplate
| 参数名称 | 类型 | 简介 | 
|---|---|---|
| workflowIndex | number | 工作流模板在协议中注册的索引值 | 
| feeToken | string | 付费工作流模板收费的 token 地址,取决于发布该模板的 builder 设定。 | 
| feeReceiver | string | 付费工作流模板受益人的钱包地址 | 
| feeReceived | string | 付费工作流模板受益人已接收的收益 | 
| feeAmount | TokenAmount | 付费工作流模板费用 | 
| enable | boolean | 模板是否已启用 | 
| issuer | string | 创建工作流模板的用户钱包地址 | 
| useCounts | number | 该模板已经被使用的次数 | 
| tags | string[] | 模板标签 | 
| transactionHash | string | 交易 hash | 
| logIndex | string | 日志索引 | 
| blockHash | string | 区块 hash | 
| transactionIndex | string | 交易索引 | 
| createdAt | number | 创建时间戳,格林威治时间 | 
| updatedAt | number | 更新时间戳,格林威治时间 | 
getTemplates
查询所有的工作流模板列表。
函数签名:
getTemplates(page: number, pageSize: number): Promise<Response<WorkflowTemplate[]>>
如何调用
const pob = new POB(provider)pob.workflow.getTemplates(1, 10);
Request
| 参数名称 | 类型 | 必选 | 默认值 | 简介 | 
|---|---|---|---|---|
| workflow | number | 是 | 1 | 页码 | 
| pageSize | number | 否 | 10 | 每页条数 | 
Response
该方法返回一个 Promise<Response<WorkflowTemplate[]>> 对象。参考 #WorkflowTemplate
getWorkflow
查询指定工作流信息。
函数签名:
getWorkflow(workflow: string): Promise<Response<Workflow>>
如何调用
const pob = new POB(provider)pob.workflow.getWorkflow("workflow contract address");
Request
| 参数名称 | 类型 | 必选 | 默认值 | 简介 | 
|---|---|---|---|---|
| workflow | string | 是 | 工作流合约地址 | 
Response
该方法返回一个 Promise<Response<Workflow>> 对象。
Workflow
| 参数名称 | 类型 | 简介 | 
|---|---|---|
| templateIndex | number | 工作流使用的模板在协议中注册的索引值 | 
| workflowEnded | boolean | 工作流是否已经结束 | 
| applicantCounts | number | 付费工作流模板受益人的钱包地址 | 
| feeReceiver | string | 付费工作流模板受益人已接收的收益 | 
| feeToken | string | 付费工作流模板费用 | 
| issuer | string | 模板是否已启用 | 
| workflow | string | 创建工作流模板的用户钱包地址 | 
| describe | string | 该模板已经被使用的次数 | 
| inOrder | boolean | 是否是串行工作流 | 
| minimumTasks | number | dang | 
| startTime | number | gognzuo | 
| endTime | number | 工作流结束时间,格林威治时间,0 表示永久工作流 | 
| reviewer | string | 审批人钱包地址 | 
| rewardsToken | string | 奖励的 token 地址 | 
| totalRewards | string | 总奖励金额 | 
| sbtAddress | string | Soulbound token 合约地址 | 
| merkleRoot | string | 默克尔树根 | 
| decimals | number | 奖励或者收费 token 的 decimal | 
| name | string | 工作流名称 | 
| description | string | 工作流简介 | 
| namespace | string | 工作流命名空间 | 
| status | string | 工作流状态 | 
| transactionHash | string | 交易 hash | 
| logIndex | string | 日志索引 | 
| blockHash | string | 区块 hash | 
| transactionIndex | string | 交易索引 | 
| createdAt | number | 创建时间戳,格林威治时间 | 
| updatedAt | number | 更新时间戳,格林威治时间 | 
getWorkflows
查询所有的工作流列表。
函数签名:
getWorkflows(page: number, pageSize: number, filter?: { namespace:?: string }): Promise<Response<Workflow[]>>
如何调用
const pob = new POB(provider)pob.workflow.getWorkflows(1, 10);
Request
| 参数名称 | 类型 | 必选 | 默认值 | 简介 | 
|---|---|---|---|---|
| page | number | 否 | 1 | 页码 | 
| pageSize | number | 否 | 10 | 每页条数 | 
| filter | filter | 否 | 过滤条件 | 
filter
| 参数名称 | 类型 | 必选 | 默认值 | 简介 | 
|---|---|---|---|---|
| namespace | string | 否 | 命名空间,用于区分数据源 | 
Response
该方法返回一个 Promise<Response<Workflow[]>> 对象。参考 #Workflow.
#task)
getTakersWithStatus
查询工作流下 takers 状态信息,可以根据指定状态来过滤。
函数签名:
getTakersWithStatus(workflow: string, status?: string[]): Promise<Response<WorkflowTakerStatus[]>>
如何调用
const pob = new POB(provider)pob.workflow.getTakersWithStatus("workflow contract address");
Request
| 参数名称 | 类型 | 必选 | 默认值 | 简介 | 
|---|---|---|---|---|
| workflow | string | 是 | 工作流合约地址 | |
| status | string[] | 否 | 工作流中 taker 的状态,可选的有 applied, approved | 
Response
WorkflowTakerStatus
| 参数名称 | 类型 | 简介 | 
|---|---|---|
| workflow | string | 工作流合约地址 | 
| taker | string | taker 钱包地址 | 
| reviewer | string | 该工作流的审批人 | 
| status | string | taker 在该工作流的状态 | 
| transactionHash | string | 交易 hash | 
| logIndex | string | 日志索引 | 
| blockHash | string | 区块 hash | 
| transactionIndex | string | 交易索引 | 
| createdAt | number | 创建时间戳,格林威治时间 | 
| updatedAt | number | 更新时间戳,格林威治时间 | 
getTakerStatus
查询工作流下指定 taker 状态信息。
函数签名:
getTakerStatus(workflow: string): Promise<Response<WorkflowTakerStatus>>
如何调用
const pob = new POB(provider)pob.workflow.getTakerStatus("workflow contract address", "taker address");
Request
| 参数名称 | 类型 | 必选 | 默认值 | 简介 | 
|---|---|---|---|---|
| workflow | string | 是 | 工作流合约地址 | |
| taker | string | 是 | taker 钱包地址 | 
Response
该方法返回一个 Promise<Response<WorkflowTakerStatus>> 对象。参考 #WorkflowTakerStatus
getTakerAppliedWorkflows
查询 taker 已经报名的工作流。
函数签名:
getTakerAppliedWorkflows(taker: string): Promise<Response<TakerWorkflowResponse>>
如何调用
const pob = new POB(provider)pob.workflow.getTakerAppliedWorkflows("taker address");
Request
| 参数名称 | 类型 | 必选 | 默认值 | 简介 | 
|---|---|---|---|---|
| taker | string | 是 | taker 钱包地址 | 
Response
TakerWorkflowResponse
| 参数名称 | 类型 | 简介 | 
|---|---|---|
| workflow | string | 工作流合约地址 | 
| taker | string | taker 钱包地址 | 
| reviewer | string | 该工作流的审批人 | 
| issuer | string | 该工作流的创建人 | 
| status | string | taker 在该工作流的状态 | 
| transactionHash | string | 交易 hash | 
| logIndex | string | 日志索引 | 
| blockHash | string | 区块 hash | 
| transactionIndex | string | 交易索引 | 
| createdAt | number | 创建时间戳,格林威治时间 | 
| updatedAt | number | 更新时间戳,格林威治时间 | 
getTakerApprovedWorkflows
查询 taker 已经被审批的工作流。
函数签名:
getTakerApprovedWorkflows(taker: string): Promise<Response<TakerWorkflowResponse>>
如何调用
const pob = new POB(provider)pob.workflow.getTakerApprovedWorkflows("taker address");
Request
| 参数名称 | 类型 | 必选 | 默认值 | 简介 | 
|---|---|---|---|---|
| taker | string | 是 | taker 钱包地址 | 
Response
该方法返回一个 Promise<Response<TakerWorkflowResponse>> 对象。参考 #TakerWorkflowResponse
getTakerClaimedSBTWorkflows
查询 taker 已经申领 SBT 的工作流。
函数签名:
getTakerClaimedSBTWorkflows(taker: string): Promise<Response<TakerWorkflowResponse>>
如何调用
const pob = new POB(provider)pob.workflow.getTakerClaimedSBTWorkflows("taker address");
Request
| 参数名称 | 类型 | 必选 | 默认值 | 简介 | 
|---|---|---|---|---|
| taker | string | 是 | taker 钱包地址 | 
Response
该方法返回一个 Promise<Response<TakerWorkflowResponse>> 对象。参考 #TakerWorkflowResponse
getIssuerCreatedWorkflows
查询 taker 已经申领 SBT 的工作流。
函数签名:
getIssuerCreatedWorkflows(taker: string): Promise<Response<TakerWorkflowResponse>>
如何调用
const pob = new POB(provider)pob.workflow.getIssuerCreatedWorkflows("issuer address");
Request
| 参数名称 | 类型 | 必选 | 默认值 | 简介 | 
|---|---|---|---|---|
| issuer | string | 是 | taker 钱包地址 | 
Response
该方法返回一个 Promise<Response<TakerWorkflowResponse>> 对象。参考 #TakerWorkflowResponse
getReviewerApprovedWorkflows
查询 taker 已经申领 SBT 的工作流。
函数签名:
getReviewerApprovedWorkflows(reviewer: string): Promise<Response<TakerWorkflowResponse>>
如何调用
const pob = new POB(provider)pob.workflow.getReviewerApprovedWorkflows("reviewer address");
Request
| 参数名称 | 类型 | 必选 | 默认值 | 简介 | 
|---|---|---|---|---|
| reviewer | string | 是 | taker 钱包地址 | 
Response
该方法返回一个 Promise<Response<TakerWorkflowResponse>> 对象。参考 #TakerWorkflowResponse
getReviewerRejectedWorkflows
查询 taker 已经申领 SBT 的工作流。
函数签名:
getReviewerRejectedWorkflows(reviewer: string): Promise<Response<TakerWorkflowResponse>>
如何调用
const pob = new POB(provider)pob.workflow.getReviewerRejectedWorkflows("reviewer address");
Request
| 参数名称 | 类型 | 必选 | 默认值 | 简介 | 
|---|---|---|---|---|
| reviewer | string | 是 | taker 钱包地址 | 
Response
该方法返回一个 Promise<Response<TakerWorkflowResponse>> 对象。参考 #TakerWorkflowResponse