> ## Documentation Index
> Fetch the complete documentation index at: https://docs.patchwork.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Events

> Interacting with Patchwork events

## Patchwork721 events

Patchwork721 supports the following event-related ERCs:

ERC-5192 - locking

```solidity theme={null}
event Locked(uint256 indexed tokenId);
event Unlocked(uint256 indexed tokenId);
```

ERC-4906 - metadata updates

```solidity theme={null}
event MetadataUpdate(uint256 indexed _tokenId);
event BatchMetadataUpdate(uint256 indexed _fromTokenId, uint256 indexed _toTokenId);
```

<Note>
  Because the code generator does not know which data is batched together for update,
  MetadataUpdate events need to be manually added to your contracts in order to work properly.
</Note>

Patchwork721 emits the following events:

```solidity theme={null}
event Frozen(uint256 indexed tokenId);
event Thawed(uint256 indexed tokenId);
event PermissionChange(address indexed to, uint256 permissions);
event SchemaChange(address indexed addr);
```

<Note>
  SchemaChange events must be manually implemented on contracts with upgradeable schemas.
</Note>

## PatchworkProtocol events

```solidity theme={null}
event Assign(address indexed owner, address fragmentAddress, uint256 fragmentTokenId, address indexed targetAddress, uint256 indexed targetTokenId, uint256 scopeFee, uint256 protocolFee);
event Unassign(address indexed owner, address fragmentAddress, uint256 fragmentTokenId, address indexed targetAddress, uint256 indexed targetTokenId);
event Patch(address indexed owner, address originalAddress, uint256 originalTokenId, address indexed patchAddress, uint256 indexed patchTokenId, uint256 scopeFee, uint256 protocolFee);
event ERC1155Patch(address indexed owner, address originalAddress, uint256 originalTokenId, address originalAccount, address indexed patchAddress, uint256 indexed patchTokenId, uint256 scopeFee, uint256 protocolFee);
event AccountPatch(address indexed owner, address originalAddress, address indexed patchAddress, uint256 indexed patchTokenId, uint256 scopeFee, uint256 protocolFee);
event ScopeClaim(string scopeName, address indexed owner);
event ScopeTransferElect(string scopeName, address indexed from, address indexed to);
event ScopeTransferCancel(string scopeName, address indexed from, address indexed to);
event ScopeTransfer(string scopeName, address indexed from, address indexed to);
event ScopeAddOperator(string scopeName, address indexed actor, address indexed operator);
event ScopeRemoveOperator(string scopeName, address indexed actor, address indexed operator);
event ScopeRuleChange(string scopeName, address indexed actor, bool allowUserPatch, bool allowUserAssign, bool requireWhitelist);
event ScopeWhitelistAdd(string scopeName, address indexed actor, address indexed addr);
event ScopeWhitelistRemove(string scopeName, address indexed actor, address indexed addr);
event MintConfigure(string scopeName, address indexed actor, address indexed mintable, MintConfig config);
event ScopeBankerAdd(string scopeName, address indexed actor, address indexed banker);
event ScopeBankerRemove(string scopeName, address indexed actor, address indexed banker);
event ScopeWithdraw(string scopeName, address indexed actor, uint256 amount);
event ProtocolBankerAdd(address indexed actor, address indexed banker);
event ProtocolBankerRemove(address indexed actor, address indexed banker);
event ProtocolWithdraw(address indexed actor, uint256 amount);
event Mint(address indexed actor, string scopeName, address indexed to, address indexed mintable, bytes data, uint256 scopeFee, uint256 protocolFee);
event MintBatch(address indexed actor, string scopeName, address indexed to, address indexed mintable, bytes data, uint256 quantity, uint256 scopeFee, uint256 protocolFee);
event ProtocolFeeConfigPropose(FeeConfig config);
event ProtocolFeeConfigCommit(FeeConfig config);
event ScopeFeeOverridePropose(string scopeName, FeeConfigOverride config);
event ScopeFeeOverrideCommit(string scopeName, FeeConfigOverride config);
event PatchFeeChange(string scopeName, address indexed addr, uint256 fee);
event AssignFeeChange(string scopeName, address indexed addr, uint256 fee);
event AssignerDelegatePropose(address indexed addr);
event AssignerDelegateCommit(address indexed addr);
```
