The getWorkflow method is the standard way of getting a whole workflow with instances of all associated modules.
Parameters: an object with the following properties
{
publicClient: PublicClient // the public client / provider to make RPC calls
walletClient: WalletClient // the wallet client to sign and submit transactions
orchestratorAddress: 0x${string} // the address of a deployed orchestrator proxy contract
requestedModules?: WorkflowRequestedModules // includes a specification of the modules used by the workflow. That is which Authorizer, Funding Manager, Payment Processor and optional logic modules are used.
}
Note: passing a requestedModules will ensure typesafety and type completion.
Returns: on object with the following properties
// each ModuleName corresponds to the name of a module (e.g. FM_DepositVault_v1)
// and each Module is a module instance as described in the previous section
{
orchestrator: GetModuleReturn<'Orchestrator_v1', W>
fundingManager: GetModuleReturn<ModuleName, W>
authorizer: GetModuleReturn<ModuleName, W>
paymentProcessor: GetModuleReturn<ModuleName, W>
optionalModule: {
[name: ModuleName]: GetModuleReturn<ModuleName, W>
}
fundingToken: {
address: `0x${string}`
module: GetModuleReturn<'ERC20', W>
decimals: number
symbol: string
}
// issuance token is conditional based on modules which use issuance logic
issuanceToken: {
address: `0x${string}`
module: GetModuleReturn<'ERC20', W>
decimals: number
symbol: string
}
}