import _m0 from "protobufjs/minimal";
import { AccountID, Key, TokenID } from "./basic_types";
import { Duration } from "./duration";
import { Timestamp } from "./timestamp";
export declare const protobufPackage = "proto";
/**
* At consensus, updates an already created token to the given values.
*
* If no value is given for a field, that field is left unchanged. For an immutable tokens (that is,
* a token without an admin key), only the expiry may be updated. Setting any other field in that
* case will cause the transaction status to resolve to TOKEN_IS_IMMUTABLE.
*
* --- Signing Requirements ---
* 1. Whether or not a token has an admin key, its expiry can be extended with only the transaction
* payer's signature.
* 2. Updating any other field of a mutable token requires the admin key's signature.
* 3. If a new admin key is set, this new key must sign unless it is exactly an empty
* KeyList. This special sentinel key removes the existing admin key and causes the
* token to become immutable. (Other Key structures without a constituent
* Ed25519 key will be rejected with INVALID_ADMIN_KEY.)
* 4. If a new treasury is set, the new treasury account's key must sign the transaction.
*
* --- Nft Requirements ---
* 1. If a non fungible token has a positive treasury balance, the operation will abort with
* CURRENT_TREASURY_STILL_OWNS_NFTS.
*/
export interface TokenUpdateTransactionBody {
/** The Token to be updated */
token: TokenID | undefined;
/**
* The new publicly visible token symbol. The token symbol is specified as a Unicode string.
* Its UTF-8 encoding cannot exceed 100 bytes, and cannot contain the 0 byte (NUL).
*/
symbol: string;
/**
* The new publicly visible name of the token. The token name is specified as a Unicode string.
* Its UTF-8 encoding cannot exceed 100 bytes, and cannot contain the 0 byte (NUL).
*/
name: string;
/**
* The new Treasury account of the Token. If the provided treasury account is not existing or
* deleted, the response will be INVALID_TREASURY_ACCOUNT_FOR_TOKEN. If successful, the Token
* balance held in the previous Treasury Account is transferred to the new one.
*/
treasury: AccountID | undefined;
/**
* The new admin key of the Token. If Token is immutable, transaction will resolve to
* TOKEN_IS_IMMUTABlE.
*/
adminKey: Key | undefined;
/**
* The new KYC key of the Token. If Token does not have currently a KYC key, transaction will
* resolve to TOKEN_HAS_NO_KYC_KEY.
*/
kycKey: Key | undefined;
/**
* The new Freeze key of the Token. If the Token does not have currently a Freeze key,
* transaction will resolve to TOKEN_HAS_NO_FREEZE_KEY.
*/
freezeKey: Key | undefined;
/**
* The new Wipe key of the Token. If the Token does not have currently a Wipe key, transaction
* will resolve to TOKEN_HAS_NO_WIPE_KEY.
*/
wipeKey: Key | undefined;
/**
* The new Supply key of the Token. If the Token does not have currently a Supply key,
* transaction will resolve to TOKEN_HAS_NO_SUPPLY_KEY.
*/
supplyKey: Key | undefined;
/**
* The new account which will be automatically charged to renew the token's expiration, at
* autoRenewPeriod interval.
*/
autoRenewAccount: AccountID | undefined;
/**
* The new interval at which the auto-renew account will be charged to extend the token's
* expiry.
*/
autoRenewPeriod: Duration | undefined;
/**
* The new expiry time of the token. Expiry can be updated even if admin key is not set. If the
* provided expiry is earlier than the current token expiry, transaction wil resolve to
* INVALID_EXPIRATION_TIME
*/
expiry: Timestamp | undefined;
/** If set, the new memo to be associated with the token (UTF-8 encoding max 100 bytes) */
memo: string | undefined;
/**
* If set, the new key to use to update the token's custom fee schedule; if the token does not
* currently have this key, transaction will resolve to TOKEN_HAS_NO_FEE_SCHEDULE_KEY
*/
feeScheduleKey: Key | undefined;
/**
* The Key which can pause and unpause the Token. If the Token does not currently have a pause key,
* transaction will resolve to TOKEN_HAS_NO_PAUSE_KEY
*/
pauseKey: Key | undefined;
}
export declare const TokenUpdateTransactionBody: {
encode(message: TokenUpdateTransactionBody, writer?: _m0.Writer): _m0.Writer;
decode(input: _m0.Reader | Uint8Array, length?: number): TokenUpdateTransactionBody;
fromJSON(object: any): TokenUpdateTransactionBody;
toJSON(message: TokenUpdateTransactionBody): unknown;
create(base?: DeepPartial): TokenUpdateTransactionBody;
fromPartial(object: DeepPartial): TokenUpdateTransactionBody;
};
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
export type DeepPartial = T extends Builtin ? T : T extends Array ? Array> : T extends ReadonlyArray ? ReadonlyArray> : T extends {
$case: string;
} ? {
[K in keyof Omit]?: DeepPartial;
} & {
$case: T["$case"];
} : T extends {} ? {
[K in keyof T]?: DeepPartial;
} : Partial;
export {};
//# sourceMappingURL=token_update.d.ts.map