aptos-move/framework/aptos-token-objects/doc/royalty.md
<a id="0x4_royalty"></a>
0x4::royaltyThis defines an object-based Royalty. The royalty can be applied to either a collection or a token. Applications should read the royalty from the token, as it will read the appropriate royalty.
RoyaltyMutatorRefinitupdatecreategenerate_mutator_refexists_atdeletegetdenominatornumeratorpayee_address<a id="0x4_royalty_Royalty"></a>
RoyaltyThe royalty of a token within this collection
Royalties are optional for a collection. Royalty percentage is calculated by (numerator / denominator) * 100%
<pre><code>#[resource_group_member(#[group = <a href="../../aptos-framework/doc/object.md#0x1_object_ObjectGroup">0x1::object::ObjectGroup</a>])] <b>struct</b> <a href="royalty.md#0x4_royalty_Royalty">Royalty</a> <b>has</b> <b>copy</b>, drop, key </code></pre> <details> <summary>Fields</summary> <dl> <dt> <code>numerator: u64</code> </dt> <dd> </dd> <dt> <code>denominator: u64</code> </dt> <dd> </dd> <dt> <code>payee_address: <b>address</b></code> </dt> <dd> The recipient of royalty payments. See the <code>shared_account</code> for how to handle multiple creators. </dd> </dl> </details><a id="0x4_royalty_MutatorRef"></a>
MutatorRefThis enables creating or overwriting a <code><a href="royalty.md#0x4_royalty_MutatorRef">MutatorRef</a></code>.
<pre><code><b>struct</b> <a href="royalty.md#0x4_royalty_MutatorRef">MutatorRef</a> <b>has</b> drop, store </code></pre> <details> <summary>Fields</summary> <dl> <dt> <code>inner: <a href="../../aptos-framework/doc/object.md#0x1_object_ExtendRef">object::ExtendRef</a></code> </dt> <dd> </dd> </dl> </details><a id="@Constants_0"></a>
<a id="0x4_royalty_EROYALTY_DENOMINATOR_IS_ZERO"></a>
The royalty denominator cannot be 0
<pre><code><b>const</b> <a href="royalty.md#0x4_royalty_EROYALTY_DENOMINATOR_IS_ZERO">EROYALTY_DENOMINATOR_IS_ZERO</a>: u64 = 3; </code></pre><a id="0x4_royalty_EROYALTY_DOES_NOT_EXIST"></a>
Royalty does not exist
<pre><code><b>const</b> <a href="royalty.md#0x4_royalty_EROYALTY_DOES_NOT_EXIST">EROYALTY_DOES_NOT_EXIST</a>: u64 = 1; </code></pre><a id="0x4_royalty_EROYALTY_EXCEEDS_MAXIMUM"></a>
The royalty cannot be greater than 100%
<pre><code><b>const</b> <a href="royalty.md#0x4_royalty_EROYALTY_EXCEEDS_MAXIMUM">EROYALTY_EXCEEDS_MAXIMUM</a>: u64 = 2; </code></pre><a id="0x4_royalty_init"></a>
initAdd a royalty, given a ConstructorRef.
<pre><code><b>public</b> <b>fun</b> <a href="royalty.md#0x4_royalty_init">init</a>(ref: &<a href="../../aptos-framework/doc/object.md#0x1_object_ConstructorRef">object::ConstructorRef</a>, <a href="royalty.md#0x4_royalty">royalty</a>: <a href="royalty.md#0x4_royalty_Royalty">royalty::Royalty</a>) </code></pre> <details> <summary>Implementation</summary> <pre><code><b>public</b> <b>fun</b> <a href="royalty.md#0x4_royalty_init">init</a>(ref: &ConstructorRef, <a href="royalty.md#0x4_royalty">royalty</a>: <a href="royalty.md#0x4_royalty_Royalty">Royalty</a>) { <b>let</b> <a href="../../aptos-framework/../aptos-stdlib/../move-stdlib/doc/signer.md#0x1_signer">signer</a> = ref.generate_signer(); <b>move_to</b>(&<a href="../../aptos-framework/../aptos-stdlib/../move-stdlib/doc/signer.md#0x1_signer">signer</a>, <a href="royalty.md#0x4_royalty">royalty</a>); } </code></pre> </details><a id="0x4_royalty_update"></a>
updateSet the royalty if it does not exist, replace it otherwise.
<pre><code><b>public</b> <b>fun</b> <b>update</b>(mutator_ref: &<a href="royalty.md#0x4_royalty_MutatorRef">royalty::MutatorRef</a>, <a href="royalty.md#0x4_royalty">royalty</a>: <a href="royalty.md#0x4_royalty_Royalty">royalty::Royalty</a>) </code></pre> <details> <summary>Implementation</summary> <pre><code><b>public</b> <b>fun</b> <b>update</b>(mutator_ref: &<a href="royalty.md#0x4_royalty_MutatorRef">MutatorRef</a>, <a href="royalty.md#0x4_royalty">royalty</a>: <a href="royalty.md#0x4_royalty_Royalty">Royalty</a>) <b>acquires</b> <a href="royalty.md#0x4_royalty_Royalty">Royalty</a> { <b>let</b> addr = mutator_ref.inner.address_from_extend_ref(); <b>if</b> (<b>exists</b><<a href="royalty.md#0x4_royalty_Royalty">Royalty</a>>(addr)) { <b>move_from</b><<a href="royalty.md#0x4_royalty_Royalty">Royalty</a>>(addr); }; <b>let</b> <a href="../../aptos-framework/../aptos-stdlib/../move-stdlib/doc/signer.md#0x1_signer">signer</a> = mutator_ref.inner.generate_signer_for_extending(); <b>move_to</b>(&<a href="../../aptos-framework/../aptos-stdlib/../move-stdlib/doc/signer.md#0x1_signer">signer</a>, <a href="royalty.md#0x4_royalty">royalty</a>); } </code></pre> </details><a id="0x4_royalty_create"></a>
createCreates a new royalty, verifying that it is a valid percentage
<pre><code><b>public</b> <b>fun</b> <a href="royalty.md#0x4_royalty_create">create</a>(numerator: u64, denominator: u64, payee_address: <b>address</b>): <a href="royalty.md#0x4_royalty_Royalty">royalty::Royalty</a> </code></pre> <details> <summary>Implementation</summary> <pre><code><b>public</b> <b>fun</b> <a href="royalty.md#0x4_royalty_create">create</a>(numerator: u64, denominator: u64, payee_address: <b>address</b>): <a href="royalty.md#0x4_royalty_Royalty">Royalty</a> { <b>assert</b>!(denominator != 0, <a href="../../aptos-framework/../aptos-stdlib/../move-stdlib/doc/error.md#0x1_error_out_of_range">error::out_of_range</a>(<a href="royalty.md#0x4_royalty_EROYALTY_DENOMINATOR_IS_ZERO">EROYALTY_DENOMINATOR_IS_ZERO</a>)); <b>assert</b>!(<a href="royalty.md#0x4_royalty_numerator">numerator</a> <= denominator, <a href="../../aptos-framework/../aptos-stdlib/../move-stdlib/doc/error.md#0x1_error_out_of_range">error::out_of_range</a>(<a href="royalty.md#0x4_royalty_EROYALTY_EXCEEDS_MAXIMUM">EROYALTY_EXCEEDS_MAXIMUM</a>)); <a href="royalty.md#0x4_royalty_Royalty">Royalty</a> { numerator, denominator, payee_address } } </code></pre> </details><a id="0x4_royalty_generate_mutator_ref"></a>
generate_mutator_ref<a id="0x4_royalty_exists_at"></a>
exists_at<a id="0x4_royalty_delete"></a>
delete<a id="0x4_royalty_get"></a>
get<a id="0x4_royalty_denominator"></a>
denominator<a id="0x4_royalty_numerator"></a>
numerator<a id="0x4_royalty_payee_address"></a>
payee_address