@abstract-foundation/agw-client
Version:
Abstract Global Wallet Client SDK
99 lines • 7.93 kB
TypeScript
import type { Address } from 'abitype';
import { type Account, BaseError, type Chain, type Client, type DeriveAccount, type DeriveChain, type ExactPartial, type FormattedTransactionRequest, type GetChainParameter, type GetTransactionRequestKzgParameter, type IsNever, type NonceManager, type Prettify, type PublicClient, type SendTransactionParameters, type TransactionRequest, type TransactionRequestEIP1559, type TransactionRequestEIP2930, type TransactionRequestEIP4844, type TransactionRequestEIP7702, type TransactionRequestLegacy, type Transport, type UnionOmit, type UnionRequiredBy, type WalletClient } from 'viem';
import type { ParseAccountErrorType } from 'viem/accounts';
import { type EstimateFeesPerGasErrorType, type EstimateGasErrorType, type GetBlockErrorType, type GetTransactionCountErrorType } from 'viem/actions';
import { type AssertRequestErrorType, type GetTransactionType } from 'viem/utils';
import type { ChainEIP712 } from 'viem/zksync';
export type IsUndefined<T> = [undefined] extends [T] ? true : false;
export declare const defaultParameters: readonly ["blobVersionedHashes", "chainId", "fees", "gas", "nonce", "type"];
export type AssertRequestParameters = ExactPartial<SendTransactionParameters<Chain>>;
export declare class MaxFeePerGasTooLowError extends BaseError {
constructor({ maxPriorityFeePerGas }: {
maxPriorityFeePerGas: bigint;
});
}
export type GetAccountParameter<account extends Account | undefined = Account | undefined, accountOverride extends Account | Address | undefined = Account | Address, required extends boolean = true> = IsUndefined<account> extends true ? required extends true ? {
account: accountOverride | Account | Address;
} : {
account?: accountOverride | Account | Address | undefined;
} : {
account?: accountOverride | Account | Address | undefined;
};
export type PrepareTransactionRequestParameterType = 'blobVersionedHashes' | 'chainId' | 'fees' | 'gas' | 'nonce' | 'sidecars' | 'type';
type ParameterTypeToParameters<parameterType extends PrepareTransactionRequestParameterType> = parameterType extends 'fees' ? 'maxFeePerGas' | 'maxPriorityFeePerGas' | 'gasPrice' : parameterType;
export type PrepareTransactionRequestRequest<chain extends ChainEIP712 | undefined = ChainEIP712 | undefined, chainOverride extends ChainEIP712 | undefined = ChainEIP712 | undefined, _derivedChain extends ChainEIP712 | undefined = DeriveChain<chain, chainOverride>> = UnionOmit<FormattedTransactionRequest<_derivedChain>, 'from'> & GetTransactionRequestKzgParameter & {
/**
* Nonce manager to use for the transaction request.
*/
nonceManager?: NonceManager | undefined;
/**
* Parameters to prepare for the transaction request.
*
* @default ['blobVersionedHashes', 'chainId', 'fees', 'gas', 'nonce', 'type']
*/
parameters?: readonly PrepareTransactionRequestParameterType[] | undefined;
/**
* Whether the transaction is the first transaction of the account.
*/
isInitialTransaction?: boolean;
};
export type PrepareTransactionRequestParameters<chain extends ChainEIP712 | undefined = ChainEIP712 | undefined, account extends Account | undefined = Account | undefined, chainOverride extends ChainEIP712 | undefined = ChainEIP712 | undefined, accountOverride extends Account | Address | undefined = Account | Address | undefined, request extends PrepareTransactionRequestRequest<chain, chainOverride> = PrepareTransactionRequestRequest<chain, chainOverride>> = request & GetAccountParameter<account, accountOverride, false> & GetChainParameter<chain, chainOverride> & GetTransactionRequestKzgParameter<request> & {
chainId?: number | undefined;
};
export type PrepareTransactionRequestReturnType<chain extends ChainEIP712 | undefined = ChainEIP712 | undefined, account extends Account | undefined = Account | undefined, chainOverride extends ChainEIP712 | undefined = ChainEIP712 | undefined, accountOverride extends Account | Address | undefined = Account | Address | undefined, request extends PrepareTransactionRequestRequest<chain, chainOverride> = PrepareTransactionRequestRequest<chain, chainOverride>, _derivedAccount extends Account | Address | undefined = DeriveAccount<account, accountOverride>, _derivedChain extends Chain | undefined = DeriveChain<chain, chainOverride>, _transactionType = request['type'] extends string | undefined ? request['type'] : GetTransactionType<request> extends 'legacy' ? unknown : GetTransactionType<request>, _transactionRequest extends TransactionRequest = (_transactionType extends 'legacy' ? TransactionRequestLegacy : never) | (_transactionType extends 'eip1559' ? TransactionRequestEIP1559 : never) | (_transactionType extends 'eip2930' ? TransactionRequestEIP2930 : never) | (_transactionType extends 'eip4844' ? TransactionRequestEIP4844 : never) | (_transactionType extends 'eip7702' ? TransactionRequestEIP7702 : never)> = Prettify<UnionRequiredBy<Extract<UnionOmit<FormattedTransactionRequest<_derivedChain>, 'from'> & (_derivedChain extends Chain ? {
chain: _derivedChain;
} : {
chain?: undefined;
}) & (_derivedAccount extends Account ? {
account: _derivedAccount;
from: Address;
} : {
account?: undefined;
from?: undefined;
}), IsNever<_transactionRequest> extends true ? unknown : ExactPartial<_transactionRequest>> & {
chainId?: number | undefined;
}, ParameterTypeToParameters<request['parameters'] extends readonly PrepareTransactionRequestParameterType[] ? request['parameters'][number] : (typeof defaultParameters)[number]>> & (unknown extends request['kzg'] ? {} : Pick<request, 'kzg'>)>;
export type PrepareTransactionRequestErrorType = AssertRequestErrorType | ParseAccountErrorType | GetBlockErrorType | GetTransactionCountErrorType | EstimateGasErrorType | EstimateFeesPerGasErrorType;
/**
* Prepares a transaction request for signing.
*
* - Docs: https://viem.sh/docs/actions/wallet/prepareTransactionRequest
*
* @param args - {@link PrepareTransactionRequestParameters}
* @returns The transaction request. {@link PrepareTransactionRequestReturnType}
*
* @example
* import { createWalletClient, custom } from 'viem'
* import { mainnet } from 'viem/chains'
* import { prepareTransactionRequest } from 'viem/actions'
*
* const client = createWalletClient({
* chain: mainnet,
* transport: custom(window.ethereum),
* })
* const request = await prepareTransactionRequest(client, {
* account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
* to: '0x0000000000000000000000000000000000000000',
* value: 1n,
* })
*
* @example
* // Account Hoisting
* import { createWalletClient, http } from 'viem'
* import { privateKeyToAccount } from 'viem/accounts'
* import { mainnet } from 'viem/chains'
* import { prepareTransactionRequest } from 'viem/actions'
*
* const client = createWalletClient({
* account: privateKeyToAccount('0x…'),
* chain: mainnet,
* transport: custom(window.ethereum),
* })
* const request = await prepareTransactionRequest(client, {
* to: '0x0000000000000000000000000000000000000000',
* value: 1n,
* })
*/
export declare function prepareTransactionRequest<chain extends ChainEIP712 | undefined = ChainEIP712 | undefined, account extends Account | undefined = Account | undefined, accountOverride extends Account | Address | undefined = undefined, chainOverride extends ChainEIP712 | undefined = ChainEIP712 | undefined, const request extends PrepareTransactionRequestRequest<chain, chainOverride> = PrepareTransactionRequestRequest<chain, chainOverride>>(client: Client<Transport, ChainEIP712, Account>, signerClient: WalletClient<Transport, ChainEIP712, Account>, publicClient: PublicClient<Transport, ChainEIP712>, args: PrepareTransactionRequestParameters<chain, account, chainOverride, accountOverride, request>): Promise<PrepareTransactionRequestReturnType>;
export {};
//# sourceMappingURL=prepareTransaction.d.ts.map