import type { AbiParameterToPrimitiveType } from "abitype"; import { prepareEvent } from "../../../../../event/prepare-event.js"; /** * Represents the filters for the "RoleGranted" event. */ export type RoleGrantedEventFilters = Partial<{ role: AbiParameterToPrimitiveType<{ type: "bytes32"; name: "role"; indexed: true; }>; account: AbiParameterToPrimitiveType<{ type: "address"; name: "account"; indexed: true; }>; sender: AbiParameterToPrimitiveType<{ type: "address"; name: "sender"; indexed: true; }>; }>; /** * Creates an event object for the RoleGranted event. * @param filters - Optional filters to apply to the event. * @returns The prepared event object. * @extension PERMISSIONS * @example * ```ts * import { getContractEvents } from "thirdweb"; * import { roleGrantedEvent } from "thirdweb/extensions/permissions"; * * const events = await getContractEvents({ * contract, * events: [ * roleGrantedEvent({ * role: ..., * account: ..., * sender: ..., * }) * ], * }); * ``` */ export function roleGrantedEvent(filters: RoleGrantedEventFilters = {}) { return prepareEvent({ filters, signature: "event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)", }); }