import _m0 from "protobufjs/minimal";
import { AccountID, ContractID } from "./basic_types";
export declare const protobufPackage = "proto";
/**
* At consensus, marks a contract as deleted and transfers its remaining hBars, if any, to a
* designated receiver. After a contract is deleted, it can no longer be called.
*
* If the target contract is immutable (that is, was created without an admin key), then this
* transaction resolves to MODIFYING_IMMUTABLE_CONTRACT.
*
* --- Signing Requirements ---
* 1. The admin key of the target contract must sign.
* 2. If the transfer account or contract has receiverSigRequired, its associated key must also sign
*/
export interface ContractDeleteTransactionBody {
/** The id of the contract to be deleted */
contractID: ContractID | undefined;
obtainers?: {
$case: "transferAccountID";
transferAccountID: AccountID;
} | {
$case: "transferContractID";
transferContractID: ContractID;
} | undefined;
/**
* If set to true, means this is a "synthetic" system transaction being used to
* alert mirror nodes that the contract is being permanently removed from the ledger.
* IMPORTANT: User transactions cannot set this field to true, as permanent
* removal is always managed by the ledger itself. Any ContractDeleteTransactionBody
* submitted to HAPI with permanent_removal=true will be rejected with precheck status
* PERMANENT_REMOVAL_REQUIRES_SYSTEM_INITIATION.
*/
permanentRemoval: boolean;
}
export declare const ContractDeleteTransactionBody: {
encode(message: ContractDeleteTransactionBody, writer?: _m0.Writer): _m0.Writer;
decode(input: _m0.Reader | Uint8Array, length?: number): ContractDeleteTransactionBody;
fromJSON(object: any): ContractDeleteTransactionBody;
toJSON(message: ContractDeleteTransactionBody): unknown;
create(base?: DeepPartial): ContractDeleteTransactionBody;
fromPartial(object: DeepPartial): ContractDeleteTransactionBody;
};
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=contract_delete.d.ts.map