UNPKG

@hazbase/relayer

Version:

The relayer SDK that provides gasless execution (meta-transactions) for the hazBase stack.

101 lines (92 loc) 3.61 kB
import { ethers } from 'ethers'; /** --------------------------------------------------------- * Network name → Forwarder address * -------------------------------------------------------- */ declare const RELAYERS: Record<string, { forwarderAddress: string; }>; /** --------------------------------------------------------- * ChainId → Network name * -------------------------------------------------------- */ declare const CHAIN_ID_TO_NETWORK: Record<number, string>; /** --------------------------------------------------------- * ERC‑20 minimal ABI (transfer, decimals, nonces) * -------------------------------------------------------- */ declare const TOKEN_ABI: readonly ["function decimals() view returns(uint8)", "function transfer(address,uint256) external returns(bool)", "function nonces(address) view returns(uint256)"]; /** --------------------------------------------------------- * EIP‑712 Forwarder ABI (subset) * -------------------------------------------------------- */ declare const FORWARDER_ABI: readonly ["function getNonce(address) view returns (uint256)", "function execute((address from,address to,uint256 value,uint256 gas,uint256 nonce,bytes data),bytes) payable returns (bytes)"]; interface ForwardRequest { from: string; to: string; value: string; gas: number; nonce: number; data: string; } interface Domain { name: string; version: string; chainId: number; verifyingContract: string; } /** Resolve relayer endpoint for the given chain. */ declare function getRelayerUrl(chainId: number): string; /** * Returns the forwarder address for a given chainId. * Throws if the chain is unsupported or not configured. */ declare function getForwarderAddress(chainId: number): string; /** Replace bigint with string when JSON‑serialising */ declare function bigintReplacer(_k: string, v: any): any; /** * Obtain a one‑time “code” from HAZAMA BASE for relayer auth. */ declare function generateRelayerAuthCode({ accessToken, chainId, contractAddress, type }: { accessToken: string; chainId: number; contractAddress: string; type?: string; }): Promise<string>; /** * Build a ForwardRequest for ERC‑20 transfer. */ declare function buildForwardRequest({ signer, tokenAddress, chainId }: { signer: ethers.JsonRpcSigner; tokenAddress: string; chainId: number; }): Promise<ForwardRequest>; /** * Create EIP‑712 domain for the given chain. */ declare function makeDomain(chainId: number): Domain; /** * Sign EIP‑712 ForwardRequest. */ declare function signForwardRequest({ signer, domain, request }: { signer: ethers.JsonRpcSigner; domain: Domain; request: ForwardRequest; }): Promise<string>; /** * Send a signed ForwardRequest to the HAZAMA BASE relayer. */ declare function sendRelayerTransaction({ chainId, code, request, signature }: { chainId: number; code: string; request: ForwardRequest; signature: string; }): Promise<string>; interface ForwardCallParams { signer: ethers.JsonRpcSigner; chainId: number; accessToken: string; contractAddress: string; abi: ethers.InterfaceAbi; method: string; args: unknown[]; } /** Generic meta‑tx call via forwarder (GSNv2). */ declare function forwardCall(p: ForwardCallParams): Promise<string>; export { CHAIN_ID_TO_NETWORK, type Domain, FORWARDER_ABI, type ForwardRequest, RELAYERS, TOKEN_ABI, bigintReplacer, buildForwardRequest, forwardCall, generateRelayerAuthCode, getForwarderAddress, getRelayerUrl, makeDomain, sendRelayerTransaction, signForwardRequest };