getWorkflow

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
    workflowOrientation?: WorkflowOrientation // 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 workflowOrientation will not just make the instantiation process faster (fewer RPC calls), but also ensure typesafety and type completion.

Returns: on object with the following properties

// each ModuleName corresponds to the name of a module (e.g. FM_Rebasing_v1) 
// and each Module is a module instance as described in the previous section
{
    orchestrator: ReturnType<typeof getModule<'Orchestrator_v1', W>>
    fundingManager: ReturnType<typeof getModule<ModuleName, W>>
    authorizer: ReturnType<typeof getModule<ModuleName, W>>
    paymentProcessor: ReturnType<typeof getModule<ModuleName, W>>
    optionalModule: {
        [name: ModuleName]: ReturnType<typeof getModule<ModuleName, W>>
    }
    erc20Module: ReturnType<typeof getModule<'ERC20', W>>
    erc20Decimals: number
    erc20Symbol: string
}

Example:

import { getWorkflow } from '@inverter-network/sdk'

const workflow = await getWorkflow({
    publicClient,
    walletClient,
    orchestratorAddress: '0x8a1897E6Fa0236F68f86240C391D2a7bED3Cf85c',
    workflowOrientation: {
      authorizer: 'AUT_Roles_v1',
      fundingManager: 'FM_Rebasing_v1',
      paymentProcessor: 'PP_Simple_v1',
      optionalModules: ['LM_PC_Bounties_v1'],
    },
})

const totalSupply = await workflow.fundingManager.read.totalSupply.run()

Last updated