sequenceDiagram
actor DappClientUser
participant DappClient
participant ChainSessionManager
participant Relayer
DappClientUser->>DappClient: isSponsored(chainId, transactions)
DappClient->>DappClient: getOrInitializeChainManager(chainId)
DappClient->>ChainSessionManager: isSponsored(calls)
ChainSessionManager->>ChainSessionManager: _buildAndSignCalls(callsToSend)
ChainSessionManager->>ChainSessionManager: _fingerprintCalls(callsToSend)
ChainSessionManager->>Relayer: feeOptions(walletAddress, chainId, signedCall.to, callsToSend, signedCall.data)
Relayer-->>ChainSessionManager: { options, quote, sponsored, failed }
alt [feeOptions.sponsored === true && !feeOptions.failed]
ChainSessionManager-->>DappClient: true
DappClient-->>DappClientUser: true
else [error, failed quote, or no sponsorship]
ChainSessionManager-->>DappClient: false
DappClient-->>DappClientUser: false
end
Reviewer's Guide
Adds explicit sponsorship and failure signalling to relayer fee APIs, wires them through wallet types and clients, and introduces high-level isSponsored helpers while bumping turbo and aligning package versions/changelogs.
Sequence diagram for explicit sponsorship check via DappClient.isSponsored
sequenceDiagram actor DappClientUser participant DappClient participant ChainSessionManager participant Relayer DappClientUser->>DappClient: isSponsored(chainId, transactions) DappClient->>DappClient: getOrInitializeChainManager(chainId) DappClient->>ChainSessionManager: isSponsored(calls) ChainSessionManager->>ChainSessionManager: _buildAndSignCalls(callsToSend) ChainSessionManager->>ChainSessionManager: _fingerprintCalls(callsToSend) ChainSessionManager->>Relayer: feeOptions(walletAddress, chainId, signedCall.to, callsToSend, signedCall.data) Relayer-->>ChainSessionManager: { options, quote, sponsored, failed } alt [feeOptions.sponsored === true && !feeOptions.failed] ChainSessionManager-->>DappClient: true DappClient-->>DappClientUser: true else [error, failed quote, or no sponsorship] ChainSessionManager-->>DappClient: false DappClient-->>DappClientUser: false endFile-Level Changes
packages/services/relayer/src/relayer/relayer.tspackages/services/relayer/src/relayer/rpc-relayer/index.tspackages/services/relayer/src/relayer/standard/sequence.tspackages/services/relayer/src/relayer/standard/local.tspackages/services/relayer/src/relayer/standard/eip6963.tspackages/services/relayer/src/relayer/standard/pk-relayer.tspackages/wallet/wdk/src/sequence/types/transaction-request.tspackages/wallet/wdk/src/sequence/types/index.tspackages/wallet/wdk/src/sequence/transactions.tspackages/wallet/wdk/test/transactions.test.tspackages/wallet/dapp-client/src/ChainSessionManager.tspackages/wallet/dapp-client/src/DappClient.tspackages/services/relayer/test/relayer/relayer.test.tspackage.jsonpnpm-lock.yamlpackages/services/relayer/package.jsonpackages/wallet/dapp-client/package.jsonpackages/wallet/wdk/package.jsonpackages/wallet/core/package.jsonpackages/services/api/package.jsonpackages/services/builder/package.jsonpackages/services/guard/package.jsonpackages/services/identity-instrument/package.jsonpackages/services/indexer/package.jsonpackages/services/marketplace/package.jsonpackages/services/metadata/package.jsonpackages/services/userdata/package.jsonpackages/utils/abi/package.jsonpackages/wallet/primitives/package.jsonpackages/services/relayer/CHANGELOG.mdpackages/wallet/dapp-client/CHANGELOG.mdpackages/wallet/wdk/CHANGELOG.mdpackages/wallet/core/CHANGELOG.mdpackages/services/api/CHANGELOG.mdpackages/services/builder/CHANGELOG.mdpackages/services/guard/CHANGELOG.mdpackages/services/identity-instrument/CHANGELOG.mdpackages/services/indexer/CHANGELOG.mdpackages/services/marketplace/CHANGELOG.mdpackages/services/metadata/CHANGELOG.mdpackages/services/userdata/CHANGELOG.mdpackages/utils/abi/CHANGELOG.mdpackages/wallet/primitives/CHANGELOG.mdTips and commands
Interacting with Sourcery
@sourcery-ai reviewon the pull request.issue from a review comment by replying to it. You can also reply to a
review comment with
@sourcery-ai issueto create an issue from it.@sourcery-aianywhere in the pullrequest title to generate a title at any time. You can also comment
@sourcery-ai titleon the pull request to (re-)generate the title at any time.@sourcery-ai summaryanywhere inthe pull request body to generate a PR summary at any time exactly where you
want it. You can also comment
@sourcery-ai summaryon the pull request to(re-)generate the summary at any time.
@sourcery-ai guideon the pullrequest to (re-)generate the reviewer's guide at any time.
@sourcery-ai resolveon thepull request to resolve all Sourcery comments. Useful if you've already
addressed all the comments and don't want to see them anymore.
@sourcery-ai dismisson the pullrequest to dismiss all existing Sourcery reviews. Especially useful if you
want to start fresh with a new review - don't forget to comment
@sourcery-ai reviewto trigger a new review!Customizing Your Experience
Access your dashboard to:
summary, the reviewer's guide, and others.
Getting Help
Originally posted by @sourcery-ai[bot] in #636 (comment)