@hazbase/relayer
Version: 
The relayer SDK that provides gasless execution (meta-transactions) for the hazBase stack.
101 lines (92 loc) • 3.61 kB
TypeScript
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 };