Skip to content

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

参数名称类型必选简介
templateIndexnumberWorkflow template index.
SBTSBTParamsSoulbound token params.
workflowTemplateDataWorkflowParamsWorkflow parmas.
tasksCommonTaskRequest[]Tasks data.

SBTParams

参数名称类型必选默认值简介
namestringSoulbound token(NFT) name, like Bored Ape Yacht Club.
symbolstringSoulbound token(NFT) symbol, like BAYC.
defaultURIstringWorkflow parmas, like: ipfs://QmeSjSinHpPnmXmspMjwiXyN6zS4E9zccariGR3jxcaWtq.
imagestringSBT NFT 图片 URL,如果没有配置 defaultURI,则必须设置该项。如果使用 IPFS,则需要配置 IPFS Schema 前缀,如:ipfs://QmeSjSinHpPnmXmspMjwiXyN6zS4E9zccariGR3jxcaWtq
...any其他值,可参考 Opensea Metadata 规范

WorkflowParams

参数名称类型必选默认值简介
inOrderboolean表示工作流下任务之间的关系,true 表示串行,false 表示并行。
minimumTasksstring如果 inOrderfalse,则必须设置该值,表示并行情况下最低完成多少个任务工作流可以结束,正常可以设置为 task 的个数。
startTimestring工作流开始的时间戳,格林威治时间。
endTimenumber0工作流结束的时间戳,格林威治时间。如果是永久工作流,则需要设置为 0。
reviewerstring工作流的审批人 ERC20 地址。
rewardsTokenstring工作流激励的 token address,用于 issuer 向 taker 支付的场景,和 feeToken 互逆。
feeReceiverstring工作流收费的接收人地址,用于 taker 向 issuer 支付的场景,和 rewardsToken 互逆。
feeTokenstring工作流收费的 token address。
describeobject工作流的额外信息,根据规范,name, description, namespace 是必须的,其他参数取决于 Workflow 的模板要求,详情可查看 Workflow Template describe 字段。规范请查看 describe 规范

Task

参数名称类型必选默认值简介
onlyOneWinnerboolean表示 Task 的激励是否只有一个人独享,true 表示是,false 表示由审批人决定。
taskIndexstringtaskIndex 为注册在 POB 协议中的 index,即 Task Template 的 index,可通过 pob.task.getTemplates() 获取。
reviewerstring表示该任务的审批人,建议设置为 issuer
totalRewardsstring该任务的奖励金额,用于 issuer 向 taker 支付的场景,和 feeAmount 互逆。
feeAmountstring该任务的收费金额,用于 taker 向 issuer 支付的场景,和 totalRewards 互逆。
deadlinenumber该任务的截止时间,不能大于等于 Workflow 的结束时间,如果 Workflow 为永久任务,则需要设置为 0。
describeobject任务的额外信息,根据规范,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

参数名称类型必选简介
workflownumber工作流合约地址。

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

参数名称类型必选简介
workflowstring工作流合约地址。
takerstring[]审批对象的钱包地址。

Response

该方法返回一个 Promise<ContractTransaction> 对象。

close

结束工作流,issuer 使用。issuer 可以提前结束该工作流。

函数签名:

close(workflow: string): Promise<ContractTransaction>

如何调用

const pob = new POB(provider)
pob.workflow.close("workflow contract address");

Request

参数名称类型必选简介
workflowstring工作流合约地址。

Response

该方法返回一个 Promise<ContractTransaction> 对象。

claimSBT

申领 SBT,taker 使用。只有当 taker 参与的工作流被审批后才可以申领。

函数签名:

claimSBT(workflow: string): Promise<ContractTransaction>

如何调用

const pob = new POB(provider)
pob.workflow.claimSBT("workflow contract address");

Request

参数名称类型必选简介
workflowstring工作流合约地址。

Response

该方法返回一个 Promise<ContractTransaction> 对象。

getTemplate

获取指定工作流模板信息。

函数签名:

getTemplate(templateIndex: number): Promise<Response<WorkflowTemplate>>

如何调用

const pob = new POB(provider)
pob.workflow.getTemplate(1);

Request

参数名称类型必选默认值简介
templateIndexnumber模板索引

Response

该方法返回一个 Promise<Response<WorkflowTemplate>> 对象。

WorkflowTemplate

参数名称类型简介
workflowIndexnumber工作流模板在协议中注册的索引值
feeTokenstring付费工作流模板收费的 token 地址,取决于发布该模板的 builder 设定。
feeReceiverstring付费工作流模板受益人的钱包地址
feeReceivedstring付费工作流模板受益人已接收的收益
feeAmountTokenAmount付费工作流模板费用
enableboolean模板是否已启用
issuerstring创建工作流模板的用户钱包地址
useCountsnumber该模板已经被使用的次数
tagsstring[]模板标签
transactionHashstring交易 hash
logIndexstring日志索引
blockHashstring区块 hash
transactionIndexstring交易索引
createdAtnumber创建时间戳,格林威治时间
updatedAtnumber更新时间戳,格林威治时间

getTemplates

查询所有的工作流模板列表。

函数签名:

getTemplates(page: number, pageSize: number): Promise<Response<WorkflowTemplate[]>>

如何调用

const pob = new POB(provider)
pob.workflow.getTemplates(1, 10);

Request

参数名称类型必选默认值简介
workflownumber1页码
pageSizenumber10每页条数

Response

该方法返回一个 Promise<Response<WorkflowTemplate[]>> 对象。参考 #WorkflowTemplate

getWorkflow

查询指定工作流信息。

函数签名:

getWorkflow(workflow: string): Promise<Response<Workflow>>

如何调用

const pob = new POB(provider)
pob.workflow.getWorkflow("workflow contract address");

Request

参数名称类型必选默认值简介
workflowstring工作流合约地址

Response

该方法返回一个 Promise<Response<Workflow>> 对象。

Workflow

参数名称类型简介
templateIndexnumber工作流使用的模板在协议中注册的索引值
workflowEndedboolean工作流是否已经结束
applicantCountsnumber付费工作流模板受益人的钱包地址
feeReceiverstring付费工作流模板受益人已接收的收益
feeTokenstring付费工作流模板费用
issuerstring模板是否已启用
workflowstring创建工作流模板的用户钱包地址
describestring该模板已经被使用的次数
inOrderboolean是否是串行工作流
minimumTasksnumberdang
startTimenumbergognzuo
endTimenumber工作流结束时间,格林威治时间,0 表示永久工作流
reviewerstring审批人钱包地址
rewardsTokenstring奖励的 token 地址
totalRewardsstring总奖励金额
sbtAddressstringSoulbound token 合约地址
merkleRootstring默克尔树根
decimalsnumber奖励或者收费 token 的 decimal
namestring工作流名称
descriptionstring工作流简介
namespacestring工作流命名空间
statusstring工作流状态
transactionHashstring交易 hash
logIndexstring日志索引
blockHashstring区块 hash
transactionIndexstring交易索引
createdAtnumber创建时间戳,格林威治时间
updatedAtnumber更新时间戳,格林威治时间

getWorkflows

查询所有的工作流列表。

函数签名:

getWorkflows(page: number, pageSize: number, filter?: { namespace:?: string }): Promise<Response<Workflow[]>>

如何调用

const pob = new POB(provider)
pob.workflow.getWorkflows(1, 10);

Request

参数名称类型必选默认值简介
pagenumber1页码
pageSizenumber10每页条数
filterfilter过滤条件

filter

参数名称类型必选默认值简介
namespacestring命名空间,用于区分数据源

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

参数名称类型必选默认值简介
workflowstring工作流合约地址
statusstring[]工作流中 taker 的状态,可选的有 applied, approved

Response

WorkflowTakerStatus

参数名称类型简介
workflowstring工作流合约地址
takerstringtaker 钱包地址
reviewerstring该工作流的审批人
statusstringtaker 在该工作流的状态
transactionHashstring交易 hash
logIndexstring日志索引
blockHashstring区块 hash
transactionIndexstring交易索引
createdAtnumber创建时间戳,格林威治时间
updatedAtnumber更新时间戳,格林威治时间

getTakerStatus

查询工作流下指定 taker 状态信息。

函数签名:

getTakerStatus(workflow: string): Promise<Response<WorkflowTakerStatus>>

如何调用

const pob = new POB(provider)
pob.workflow.getTakerStatus("workflow contract address", "taker address");

Request

参数名称类型必选默认值简介
workflowstring工作流合约地址
takerstringtaker 钱包地址

Response

该方法返回一个 Promise<Response<WorkflowTakerStatus>> 对象。参考 #WorkflowTakerStatus

getTakerAppliedWorkflows

查询 taker 已经报名的工作流。

函数签名:

getTakerAppliedWorkflows(taker: string): Promise<Response<TakerWorkflowResponse>>

如何调用

const pob = new POB(provider)
pob.workflow.getTakerAppliedWorkflows("taker address");

Request

参数名称类型必选默认值简介
takerstringtaker 钱包地址

Response

TakerWorkflowResponse

参数名称类型简介
workflowstring工作流合约地址
takerstringtaker 钱包地址
reviewerstring该工作流的审批人
issuerstring该工作流的创建人
statusstringtaker 在该工作流的状态
transactionHashstring交易 hash
logIndexstring日志索引
blockHashstring区块 hash
transactionIndexstring交易索引
createdAtnumber创建时间戳,格林威治时间
updatedAtnumber更新时间戳,格林威治时间

getTakerApprovedWorkflows

查询 taker 已经被审批的工作流。

函数签名:

getTakerApprovedWorkflows(taker: string): Promise<Response<TakerWorkflowResponse>>

如何调用

const pob = new POB(provider)
pob.workflow.getTakerApprovedWorkflows("taker address");

Request

参数名称类型必选默认值简介
takerstringtaker 钱包地址

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

参数名称类型必选默认值简介
takerstringtaker 钱包地址

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

参数名称类型必选默认值简介
issuerstringtaker 钱包地址

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

参数名称类型必选默认值简介
reviewerstringtaker 钱包地址

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

参数名称类型必选默认值简介
reviewerstringtaker 钱包地址

Response

该方法返回一个 Promise<Response<TakerWorkflowResponse>> 对象。参考 #TakerWorkflowResponse