Extensions
Extensions are external smart contracts that can be added to the Paymaster contract. These extensions are used to enforce specific conditions or rules that must be met for a transaction to be eligible
createExtension
async function createExtension(
name: string,
type: ExtensionMethod,
wallet: WalletClient,
client: unknown,
items?: ExtensionItems,
restrictionFactoryABI?: Abi,
restrictionFactoryContractAddress?: Address
): Promise<Address>Deploys a new extension contract based on the provided parameters.
name:string- The name of the extension contract to be created.type:ExtensionMethod- The type of extension contract to be created. It can be one of the following:CONTRACT,USER, orFUNCTIONwallet:WalletClient: AWalletClientinstance used for signing transactions and interacting with the Restriction Factory contract.client:PublicClient: APublicClientinstance used for writing public transactions.items:ExtensionItems(optional) - An object containing the items (e.g., contract addresses, user addresses, function signatures with contract addresses) related to the extension being created.restrictionFactoryABI:Abi(optional) - The ABI of the Restriction Factory contract. If not provided, it will be retrieved based on the chain ID.restrictionFactoryContractAddress:Address(optional) - The address of the Restriction Factory contract. If not provided, it will be retrieved based on the chain ID.Returns: Address: address of the deployed extension.
types
PaymasterParams
A tuple type representing the parameters for several methods of Paymaster instance, like sendPaymasterTransaction. Added for easier usage.
export type PaymasterParams = {
/** The address of the paymaster. */
paymaster: Address;
/** The bytestream input for the paymaster. */
paymasterInput: BytesLike;
};PaymasterType
export enum PaymasterType {
ERC20,
SPONSORED,
}ExtensionMethod
export enum ExtensionMethod {
CONTRACT,
USER,
FUNCTION,
}PaymasterOptions
export interface PaymasterOptions {
innerInput?: BytesLike;
minimalAllowance?: bigint;
}PaymasterOverrides
export interface PaymasterOverrides
extends Omit<TransactionRequest, 'from' | 'type' | 'gasPrice'> {
paymasterOptions?: PaymasterOptions;
gasLimit?: bigint;
gasPrice?: bigint;
customData?: PaymasterParams;
}BaseRestrictionItem
export type BaseRestrictionItem = {
address: Address;
};AddressOrBaseRestrictionItem
export type AddressOrBaseRestrictionItem = Address | BaseRestrictionItem;ContractItems
export type ContractItems = AddressOrBaseRestrictionItem[];UserItems
export type UserItems = AddressOrBaseRestrictionItem[];FunctionItems
export type FunctionItems = (BaseRestrictionItem & {
functionSignature: string;
})[];RestrictionItems
export type RestrictionItems = ContractItems | UserItems | FunctionItems;Last updated