import { BigNumber, Signer, providers, utils } from 'ethers'; /** * Context needed to issue a signed read against a Seismic chain. */ export interface SeismicSignerContext { chainId: number; rpcUrl: string; name: string; } /** * Wraps an ethers Signer for Seismic chains. * * On Seismic, unsigned `eth_call`/`eth_estimateGas` zero out the `from` field * (msg.sender = 0x0) to protect access-controlled shielded state. Gas estimation * for owner-gated calls therefore reverts with "Ownable: caller is not the * owner". Seismic's `eth_estimateGas` instead accepts a *signed* raw transaction * and recovers `msg.sender` from the signature (a "signed read"). * * Signed reads require Seismic encryption metadata and a replay-protected * signature. The official client handles encryption and EIP-712 encoding; * signing delegates to the wrapped signer without exporting its private key. * * Only `estimateGas` is overridden. Writes are plain transparent transactions * that already work on Seismic, so everything else delegates to the wrapped * signer. */ export declare class SeismicSigner extends Signer { readonly inner: Signer; private readonly context; readonly provider?: providers.Provider; constructor(inner: Signer, context: SeismicSignerContext); static is(signer: Signer): signer is SeismicSigner; getAddress(): Promise; signMessage(message: string | utils.Bytes): Promise; signTransaction(tx: utils.Deferrable): Promise; sendTransaction(tx: utils.Deferrable): Promise; connect(provider: providers.Provider): SeismicSigner; /** * Signed-read gas estimation. Sends an encrypted EIP-712 signed read to * Seismic's `eth_estimateGas` so it recovers the real `msg.sender`. Fees are * zeroed so estimation isn't gated on the signer's balance (it only needs the * execution-gas estimate; the actual send uses normal fees). */ estimateGas(tx: utils.Deferrable): Promise; } //# sourceMappingURL=SeismicSigner.d.ts.map