@fastxyz/fast-connector
v0.1.0
Published
Dapp-facing connector for injected Fast wallets
Downloads
155
Readme
@fastxyz/fast-connector
Dapp-facing connector for injected Fast wallets.
Positioning
@fastxyz/sdkis the low-level Fast client layer, parallel toviemoretherswindow.fastsetis the injected wallet surface, parallel towindow.ethereum@fastxyz/fast-connectoris the app-facing wallet adapter layer, parallel to a wagmi injected connector or an app wrapper aroundethers.BrowserProvider(window.ethereum)
This package is for browser apps such as InfoFi. It is not for extension-internal wallet logic.
The extension still owns:
- key management
- permissions and approval UI
- signing
- transaction submission
This package owns:
- injected wallet detection
- adapter typing
- dapp-facing connection state
- a reusable app connector over
window.fastset - optional provider-backed reads through
@fastxyz/sdk/browser - high-level transaction helpers over injected wallet methods
Status
This repo includes:
- injected wallet detection and waiting for
fastset#initialized - connection/account state
- message signing
- provider-backed read helpers for balances, tokens, certificates, and explorer URLs
- high-level
transfer()andsubmitClaim()wrappers - a
@fastxyz/fast-connector/testingentrypoint for reusable wallet mocks
It intentionally does not own onramp/vendor logic. Swapper, AllSet, and fiat adapters should live in fast-onramp.
Planned Usage
import { FastConnector } from '@fastxyz/fast-connector';
const connector = FastConnector.fromInjected(window.fastset);
await connector.connect();
const account = await connector.exportKeys();
const signed = await connector.sign({ message: 'hello fast' });
const balance = await connector.getBalance('FAST');
const payment = await connector.transfer({
recipient: 'fast1...',
amount: '0x32',
});
const explorerUrl = await connector.getExplorerUrl(payment.txHash);You can also inject a custom read provider, or let the connector build one from the installed SDK:
import { FastConnector } from '@fastxyz/fast-connector';
const connector = FastConnector.fromInjected(window.fastset, {
providerOptions: {
network: 'mainnet',
},
});
await connector.connect();
const tokens = await connector.getTokens();
const network = await connector.getNetwork();Testing
@fastxyz/fast-connector/testing provides reusable mocks for app and integration tests:
import { FastConnector } from '@fastxyz/fast-connector';
import {
createMockAccount,
createMockInjectedFastConnector,
dispatchFastsetInitialized,
} from '@fastxyz/fast-connector/testing';
const wallet = createMockInjectedFastConnector();
window.fastset = wallet;
dispatchFastsetInitialized(window);
const connector = FastConnector.fromInjected(wallet);
await connector.connect();
wallet.mock.emitAccountChanged(createMockAccount({
publicKey: 'bb'.repeat(32),
injected: true,
}));The testing entrypoint includes:
- mock injected wallet factory
- canonical and injected mock accounts
- mock transfer and claim certificates
- helpers for
fastset#initialized - helpers for account-change events
Development
npm install
npm run build
npm test