Paket @solana/surfpool mengekspos satu kelas, Surfnet, beserta tipe
pendukung yang Anda butuhkan untuk memanggil metodenya dengan aman secara tipe.
Halaman ini mencantumkan setiap simbol yang diekspor; untuk penggunaan naratif,
lihat panduan yang dimulai dengan Ikhtisar.
Ekspor Paket
| Simbol | Jenis | Catatan |
|---|---|---|
Surfnet | kelas | Instance Surfnet yang berjalan dengan metode cheatcode |
SurfnetConfig | tipe | Argumen untuk Surfnet.startWithConfig |
DeployOptions | tipe | Argumen untuk Surfnet.deploy |
SetTokenAccountUpdate | tipe | Argumen untuk Surfnet.setTokenAccount |
ResetAccountOptions | tipe | Argumen untuk Surfnet.resetAccount |
StreamAccountOptions | tipe | Argumen untuk Surfnet.streamAccount |
SolAccountFunding | tipe | Elemen dari array yang diteruskan ke Surfnet.fundSolMany |
SimnetEventValue | tipe | Elemen yang dikembalikan oleh Surfnet.drainEvents |
KeypairInfo | tipe | Dikembalikan oleh Surfnet.newKeypair |
ClockValue | tipe | Field pada SimnetEventValue |
EpochInfoValue | tipe | Dikembalikan oleh helper perjalanan waktu |
ByteArrayLike | tipe | Uint8Array | number[] — input byte fleksibel |
Kelas Surfnet
Metode Statis
class Surfnet {static start(): Surfnet;static startWithConfig(config: SurfnetConfig): Surfnet;static newKeypair(): KeypairInfo;}
Properti Instance
class Surfnet {readonly rpcUrl: string; // http://127.0.0.1:<port>readonly wsUrl: string; // ws://127.0.0.1:<port>readonly payer: string; // base58 public keyreadonly payerSecretKey: Uint8Array; // 64-byte private keyreadonly instanceId: string;}
Siklus Hidup
class Surfnet {stop(): void; // idempotent; safe to call from `finally` / test teardown}
Cheatcode SOL
class Surfnet {fundSol(address: string, lamports: number): void;fundSolMany(accounts: SolAccountFunding[]): void;setAccount(address: string,lamports: number,data: Uint8Array,owner: string): void;resetAccount(address: string, options?: ResetAccountOptions): void;}
Cheatcode Token
class Surfnet {fundToken(owner: string,mint: string,amount: number,tokenProgram?: string): void;fundTokenMany(owners: string[],mint: string,amount: number,tokenProgram?: string): void;setTokenBalance(owner: string,mint: string,amount: number,tokenProgram?: string): void;setTokenAccount(owner: string,mint: string,update: SetTokenAccountUpdate,tokenProgram?: string): void;getAta(owner: string, mint: string, tokenProgram?: string): string;}
Perjalanan Waktu
class Surfnet {timeTravelToSlot(slot: number): EpochInfoValue;timeTravelToEpoch(epoch: number): EpochInfoValue;timeTravelToTimestamp(timestampMs: number): EpochInfoValue;}
Deployment Program
class Surfnet {deployProgram(programName: string): string; // returns program iddeploy(options: DeployOptions): string; // returns program id}
Streaming & Event
class Surfnet {streamAccount(address: string, options?: StreamAccountOptions): void;drainEvents(): SimnetEventValue[];}
Tipe Konfigurasi
SurfnetConfig
interface SurfnetConfig {offline?: boolean; // default: trueremoteRpcUrl?: string; // setting this implies offline=falseblockProductionMode?: "manual" | "clock" | "transaction"; // default: "transaction"slotTimeMs?: number; // default: 1airdropSol?: number; // lamports; default: 10_000_000_000airdropAddresses?: string[];payerSecretKey?: ByteArrayLike;enableFeatures?: string[]; // feature IDs (base58 or kebab name)disableFeatures?: string[];allFeatures?: boolean;}
DeployOptions
interface DeployOptions {programId: string; // base58 addresssoPath?: string; // mutually exclusive with soBytessoBytes?: ByteArrayLike;idlPath?: string; // optional Anchor IDL JSON}
SetTokenAccountUpdate
interface SetTokenAccountUpdate {amount?: number;delegate?: string; // base58 pubkeyclearDelegate?: boolean;state?: string; // e.g. "initialized", "frozen"delegatedAmount?: number;closeAuthority?: string;clearCloseAuthority?: boolean;}
ResetAccountOptions
interface ResetAccountOptions {includeOwnedAccounts?: boolean;}
StreamAccountOptions
interface StreamAccountOptions {includeOwnedAccounts?: boolean;}
SolAccountFunding
interface SolAccountFunding {address: string;lamports: number;}
KeypairInfo
interface KeypairInfo {publicKey: string; // base58secretKey: number[]; // 64 bytes}
ByteArrayLike
type ByteArrayLike = Uint8Array | number[];
Jika sebuah metode menerima ByteArrayLike, Anda dapat meneruskan Uint8Array
atau array angka biasa. Wrapper menormalisasi keduanya ke dalam format yang
diharapkan oleh binding native.
Tipe Event
SimnetEventValue
Objek datar dengan diskriminator kind dan field opsional. Lihat
Events untuk katalog varian.
interface SimnetEventValue {kind: string;message?: string;timestamp?: string;initialTransactionCount?: number;clock?: ClockValue;epochInfo?: EpochInfoValue;accountPubkey?: string;clockCommand?: string;slotIntervalMs?: number;transactionSignature?: string;logs?: string[];computeUnitsConsumed?: number;fee?: number;errorMessage?: string;tag?: string;profileKey?: string;profileSlot?: number;runbookId?: string;runbookErrors?: string[];}
ClockValue
interface ClockValue {slot: number;epoch: number;leaderScheduleEpoch: number;unixTimestamp: number;epochStartTimestamp: number;}
EpochInfoValue
interface EpochInfoValue {absoluteSlot: number;slotIndex: number;slotsInEpoch: number;epoch: number;blockHeight: number;transactionCount?: number;}
Error
Setiap metode melempar Error standar yang pesannya membungkus SurfnetError
Rust yang mendasarinya. Periksa error.message untuk membedakan antar kasus.
try {surfnet.deploy({ programId, soPath: "missing.so" });} catch (err) {// err.message starts with "Cheatcode:" / "Startup:" / etc.console.error(err);}
Jejak Modul Native
Paket ini bergantung pada binari native khusus platform yang diterbitkan sebagai
optionalDependencies:
| Triple | Paket |
|---|---|
aarch64-apple-darwin | @solana/surfpool-darwin-arm64 |
x86_64-apple-darwin | @solana/surfpool-darwin-x64 |
x86_64-unknown-linux-gnu | @solana/surfpool-linux-x64-gnu |
Jika tidak ada paket platform yang berhasil diinstal di mesin Anda,
Surfnet.start() akan melempar error saat pertama kali dipanggil dengan pesan
"native module not found" yang jelas. Lihat
Instalasi untuk matriks dukungan dan
pemecahan masalah.
Is this page helpful?