@dngbuilds/zapkit-core
v0.1.5
Published
The Starknet wallet SDK — connect, transact, and bridge in a few lines of code.
Downloads
901
Maintainers
Readme
Overview
@dngbuilds/zapkit-core wraps the StarkZap SDK into a single ZapKit class that handles wallet connections (Cartridge Controller, StarkSigner, Privy), staking, bridging, and low-level contract calls on Starknet.
Using React? Check out
@dngbuilds/zapkit-react— it provides a context provider and hooks that build on top of this core package.
Installation
npm install @dngbuilds/zapkit-coreQuick Start
import ZapKit, { OnboardStrategy } from "@dngbuilds/zapkit-core";
const kit = new ZapKit({ network: "mainnet" });
// Connect with Cartridge Controller (social login / passkeys)
const result = await kit.onboard({ strategy: OnboardStrategy.Cartridge });
console.log("Connected:", result.wallet.address);
// Get token balance
const balance = await kit.getBalance({ symbol: "ETH", address: "0x049d…" });
console.log("ETH balance:", balance.toString());Wallet Strategies
ZapKit supports three onboarding strategies:
Cartridge Controller
Social login and passkeys via Cartridge. No extra dependencies needed.
await kit.onboard({ strategy: OnboardStrategy.Cartridge });StarkSigner (Private Key)
Direct private-key signing for scripts, bots, or testing.
import { StarkSigner } from "@dngbuilds/zapkit-core";
await kit.onboard({
strategy: OnboardStrategy.Signer,
signer: new StarkSigner("0xYOUR_PRIVATE_KEY"),
});Privy
Third-party auth (email, social, etc.) via Privy. Requires the Privy SDK in your app.
await kit.onboard({
strategy: OnboardStrategy.Privy,
privy: { walletConnector: privyWalletConnector },
});API Reference
new ZapKit(config)
Creates a new ZapKit instance.
| Option | Type | Description |
| --------- | -------- | -------------------------- |
| network | string | "mainnet" or "sepolia" |
| ...rest | | Passed through to StarkZap |
Wallet Methods
| Method | Returns | Description |
| ---------------------------- | ----------------- | ------------------------------------ |
| onboard(options) | OnboardResult | Connect using a given strategy |
| connectWallet(options) | Wallet | Low-level wallet connect |
| connectCartridge(options?) | CartridgeWallet | Direct Cartridge Controller connect |
| getWallet() | Wallet \| null | Current wallet instance |
| disconnect() | void | Disconnect the active wallet |
| ensureReady(options?) | void | Wait until the wallet is fully ready |
DeFi Methods
| Method | Returns | Description |
| -------------------------------- | --------------- | --------------------------------- |
| stakingTokens() | Token[] | List available staking tokens |
| getStakerPools(address) | Pool[] | Pools a staker is in |
| stake({ poolAddress, amount }) | Tx | Stake tokens in a pool |
| claimRewards(poolAddress) | Tx | Claim staking rewards |
| getBridgingTokens(chain?) | BridgeToken[] | Available bridging tokens |
| getBalance(token) | Amount | Token balance of connected wallet |
Utilities
| Method / Property | Description |
| ------------------------- | ----------------------------------- |
| getProvider() | Returns the underlying RPC provider |
| callContract(call) | Execute a read-only contract call |
| utils.Amount | Token amount helpers |
| utils.fromAddress(addr) | Parse an address string |
| utils.getPresets() | Account preset configurations |
Vite Plugin
ZapKit provides a Vite plugin that resolves optional peer dependencies (starkzap modules) to no-op shims, preventing missing-module errors during builds.
// vite.config.ts
import { defineConfig } from "vite";
import { zapkitPlugin } from "@dngbuilds/zapkit-core/vite";
export default defineConfig({
plugins: [zapkitPlugin()],
});Exports
// Value exports
export { OnboardStrategy, StarkSigner, Amount, fromAddress };
export { getPresets, accountPresets, Tx, TxBuilder };
export { ChainId, ExternalChain, BridgeToken };
// Type exports
export type { SDKConfig, Wallet, Token, Address, Pool };
export type { OnboardOptions, OnboardResult, ConnectWalletOptions };
export type { CartridgeWalletInterface, ConnectCartridgeOptions };
export type { EnsureReadyOptions, ExecuteOptions, RpcProvider, Call };