/**
 * Fireblocks API
 * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain.  - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
 *
 * The version of the OpenAPI document: 1.6.2
 * Contact: developers@fireblocks.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
import { AbiFunction } from './abi-function';
import { ContractAttributes } from './contract-attributes';
import { ContractDoc } from './contract-doc';
/**
 *
 * @export
 * @interface ContractUploadRequest
 */
export interface ContractUploadRequest {
    /**
     * The name of the contract template
     * @type {string}
     * @memberof ContractUploadRequest
     */
    'name': string;
    /**
     * A short description of the contract template
     * @type {string}
     * @memberof ContractUploadRequest
     */
    'description': string;
    /**
     * The compiled artifact of this smart contract. Used for deployment of this contract template
     * @type {string}
     * @memberof ContractUploadRequest
     */
    'bytecode': string;
    /**
     * The type of the contract template
     * @type {string}
     * @memberof ContractUploadRequest
     */
    'type': ContractUploadRequestTypeEnum;
    /**
     * The abi of the contract template. Necessary for displaying and for after deployment encoding
     * @type {Array<AbiFunction>}
     * @memberof ContractUploadRequest
     */
    'abi': Array<AbiFunction>;
    /**
     * A full description of the contract template. May contain   to break the lines
     * @type {string}
     * @memberof ContractUploadRequest
     */
    'longDescription'?: string;
    /**
     * The source code of the contract. Optional.
     * @type {string}
     * @memberof ContractUploadRequest
     */
    'sourcecode'?: string;
    /**
     * A `natspec` compliant documentation json. Can be retrieved from the output json after compilation
     * @type {ContractDoc}
     * @memberof ContractUploadRequest
     */
    'docs'?: ContractDoc;
    /**
     * The attributes related to this contract template. It will be displayed in the tokenization page
     * @type {ContractAttributes}
     * @memberof ContractUploadRequest
     */
    'attributes'?: ContractAttributes;
    /**
     * The protocol that the template will be used for
     * @type {string}
     * @memberof ContractUploadRequest
     */
    'protocol'?: ContractUploadRequestProtocolEnum;
}
export declare const ContractUploadRequestTypeEnum: {
    readonly FungibleToken: "FUNGIBLE_TOKEN";
    readonly NonFungibleToken: "NON_FUNGIBLE_TOKEN";
    readonly NonToken: "NON_TOKEN";
    readonly TokenExtension: "TOKEN_EXTENSION";
    readonly TokenUtility: "TOKEN_UTILITY";
};
export type ContractUploadRequestTypeEnum = typeof ContractUploadRequestTypeEnum[keyof typeof ContractUploadRequestTypeEnum];
export declare const ContractUploadRequestProtocolEnum: {
    readonly Eth: "ETH";
    readonly Sol: "SOL";
};
export type ContractUploadRequestProtocolEnum = typeof ContractUploadRequestProtocolEnum[keyof typeof ContractUploadRequestProtocolEnum];
