Problem
Request Network uses config variables at runtime. This means that the package MUST contain code to support all possible configurations even if they're not used.
Proposed Solution
Use dependency injection to empower the user to select the features and dependencies they want. This will involve API BREAKING CHANGES and refactoring package boundaries.
Definition of Done
This issue is an EPIC that encompasses the following subtasks:
Example
In the following code snippet, notice that the currencyManager, chains, and balanceDetectors are all injected.
const requestNetwork = new RequestNetwork({
decryptionProvider,
signatureProvider,
currencyManager,
chains,
// if no compatible balance detector is found, the balance will be null.
balanceDetectors: [
new EvmTheGraphBalanceDetector(chains, currencyManager),
new NearTheGraphBalanceDetector(chains),
new BtcBalanceDetector(),
new SolanaBalanceDetector(),
new SuperfluidBalanceDetector(chains),
// ...
]
})
Reference
Problem
Request Network uses config variables at runtime. This means that the package MUST contain code to support all possible configurations even if they're not used.
Proposed Solution
Use dependency injection to empower the user to select the features and dependencies they want. This will involve API BREAKING CHANGES and refactoring package boundaries.
Definition of Done
This issue is an EPIC that encompasses the following subtasks:
payment-detectionby payment network. Inject payment detectors into the request client. Remove theskipPaymentDetectionflag. #1211request-client.jsto makeepk-signaturedepencency injectable (likeweb3-signature). Unclear why this dependency exists. #1523Example
In the following code snippet, notice that the currencyManager, chains, and balanceDetectors are all injected.
Reference