UNPKG

@atomiqlabs/chain-starknet

Version:
77 lines (76 loc) 2.99 kB
import { StarknetSigner } from "./StarknetSigner"; import { StarknetTx } from "../chain/modules/StarknetTransactions"; import { StarknetChainInterface } from "../chain/StarknetChainInterface"; import { Account } from "starknet"; /** * Configuration for the persistent signer * * @category Wallets */ export type StarknetPersistentSignerConfig = { /** * How long to wait for the transaction to confirm before bumping the fee (default 15,000ms = 15s) */ waitBeforeBump?: number; /** * Minimum fee increment in absolute terms in base units of STRK token (default 1,000,000 = 0.001GFri) */ minFeeIncreaseAbsolute?: bigint; /** * Minimum fee increase in PPM (parts per million, i.e. 10,000 = 1%) (default 110,000 = 11%) */ minFeeIncreasePpm?: bigint; /** * Minimum tip increment in absolute terms in base units of STRK token (default 1,000,000,000 = 1GFri) */ minTipIncreaseAbsolute?: bigint; /** * Minimum tip increase in PPM (parts per million, i.e. 10,000 = 1%) (default 110,000 = 11%) */ minTipIncreasePpm?: bigint; }; /** * A complex starknet signer implementation with internal nonce management, with race condition preventions, * automatic transaction rebroadcasting and failovers. Uses the NodeJS `fs` library to persist transaction * data across application restarts, hence this doesn't work on frontends and is intended to be used as a * robust backend wallet implementation. * * @category Wallets */ export declare class StarknetPersistentSigner extends StarknetSigner { private pendingTxs; private confirmedNonce; private pendingNonce; private feeBumper; private stopped; private readonly directory; private readonly config; private readonly chainInterface; private readonly logger; constructor(account: Account, chainInterface: StarknetChainInterface, directory: string, config?: StarknetPersistentSignerConfig); private load; private priorSavePromise?; private saveCount; private save; private checkPastTransactions; private startFeeBumper; private syncNonceFromChain; /** * @inheritDoc */ init(): Promise<void>; /** * @inheritDoc */ stop(): Promise<void>; private readonly sendTransactionQueue; /** * Signs and sends the starknet transaction, the `onBeforePublish` callback is called after the transaction * is signed and before it is broadcast. Ensures that transactions are always sent in order by using a * "single-threaded" promise queue, and no nonce collision happen. * * @param transaction A transaction to sign and send * @param onBeforePublish A callback that is called before the transaction gets broadcasted */ sendTransaction(transaction: StarknetTx, onBeforePublish?: (txId: string, rawTx: string) => Promise<void>): Promise<string>; }