@cfxlabsinc/b2b-services
    Preparing search index...

    The program-deploy activities (PROGRAM_DEPLOYS.md §5).

    Every signature a deploy produces happens here, on temporal-worker. The dashboard's whole write capability is workflow.start — see §2.4 and the no-restricted-imports boundary in bunfig.toml.

    CFX's signer accounts go to the loader's builders as createNoopSigner placeholders and wallet-api signs for them through BackofficeWalletService, so no CFX key is ever in this process. A key generated here for a new account (a buffer) signs locally as an extraSigner. Each signature carries a reference built from the run's workflow id (deployId) and its step.

    type DeploySolanaProgramActivitiesDependencies = {
        backofficeWalletQueryService: BackofficeWalletQueryService;
        backofficeWalletService: BackofficeWalletService;
        gitHubReleaseClient: GitHubReleaseClient;
        solanaProgramDeployQueryService: Pick<
            SolanaProgramDeployQueryService,
            "listPairReleases",
        >;
        solanaRpc: Rpc<SolanaRpcApi>;
        solanaTransactionSenderService: SolanaTransactionSenderService;
        solanaTransactionService: SolanaTransactionService;
        writeSettleMs?: number;
    }
    Index
    backofficeWalletQueryService: BackofficeWalletQueryService
    backofficeWalletService: BackofficeWalletService
    gitHubReleaseClient: GitHubReleaseClient
    solanaProgramDeployQueryService: Pick<
        SolanaProgramDeployQueryService,
        "listPairReleases",
    >

    The cached release listing, shared with the register.

    solanaRpc: Rpc<SolanaRpcApi>
    solanaTransactionSenderService: SolanaTransactionSenderService
    solanaTransactionService: SolanaTransactionService
    writeSettleMs?: number

    How long a write pass with chunks left waits before re-sending. Absent means SETTLE_MS; only tests set it.