factory
Track dynamically created contracts.
factory(config: FactoryConfig): Factory
Parameters:
address: Factory contract address or array of addresses (required)
event: Factory creation event ABI or filtered event object (required)
- Simple format:
AbiEvent<T> - Capture all factory events
- Filtered format:
{ event: AbiEvent<T>, params: {...} } - Filter by indexed parameters
parameter: Extract child address (event) => string (required)
database: Factory database instance (required)
Example:
import { factory, factorySqliteDatabase } from "@subsquid/pipes/evm";
const factoryInstance = factory({
address: "0x1f98431c8ad98523631ae4a59f267346ea31f984",
event: factoryAbi.events.PoolCreated,
parameter: "pool",
database: factorySqliteDatabase({ path: "./pools.sqlite" }),
});
Filtered factory events:
factory({
address: "0x1f98431c8ad98523631ae4a59f267346ea31f984",
event: {
event: factoryAbi.events.PoolCreated,
params: {
token0: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", // WETH
},
},
parameter: "pool",
database: factorySqliteDatabase({ path: "./weth-pools.sqlite" }),
});
Only indexed event parameters can be used in the params object.
factorySqliteDatabase
Create SQLite factory database.
factorySqliteDatabase(config: { path: string }): FactoryDatabase
Example:
import { factorySqliteDatabase } from "@subsquid/pipes/evm";
const db = factorySqliteDatabase({ path: "./factories.sqlite" });
No longer requires await - returns the database instance synchronously.