/**
 * 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';
import { VendorDto } from './vendor-dto';
/**
 *
 * @export
 * @interface ContractTemplateDto
 */
export interface ContractTemplateDto {
    /**
     * The unique identifier of the contract template
     * @type {string}
     * @memberof ContractTemplateDto
     */
    'id': string;
    /**
     * The name of the contract template
     * @type {string}
     * @memberof ContractTemplateDto
     */
    'name': string;
    /**
     * A short description of the contract template
     * @type {string}
     * @memberof ContractTemplateDto
     */
    'description': string;
    /**
     * The abi of the contract template. Necessary for displaying and for after deployment encoding
     * @type {Array<AbiFunction>}
     * @memberof ContractTemplateDto
     */
    'abi': Array<AbiFunction>;
    /**
     * Is this a contract that is viewable by all fireblocks\'s users or is it visible only for this workspace
     * @type {boolean}
     * @memberof ContractTemplateDto
     */
    'isPublic': boolean;
    /**
     *
     * @type {string}
     * @memberof ContractTemplateDto
     */
    'initializationPhase': ContractTemplateDtoInitializationPhaseEnum;
    /**
     * A full description of the contract template. May contain   to break the lines
     * @type {string}
     * @memberof ContractTemplateDto
     */
    'longDescription'?: string;
    /**
     * The attributes related to this contract template. It will be displayed in the tokenization page
     * @type {ContractAttributes}
     * @memberof ContractTemplateDto
     */
    'attributes'?: ContractAttributes;
    /**
     * A `natspec` compliant documentation json. Can be retrieved from the output json after compilation
     * @type {ContractDoc}
     * @memberof ContractTemplateDto
     */
    'docs'?: ContractDoc;
    /**
     * The workspace id of the owner of this contract template. If it\'s a private contract, only this workspace will be allowed to deploy it
     * @type {string}
     * @memberof ContractTemplateDto
     */
    'owner'?: string;
    /**
     * The details of the vendor of this contract template. Applicable only for public contract templates
     * @type {VendorDto}
     * @memberof ContractTemplateDto
     */
    'vendor'?: VendorDto;
    /**
     * True if the workspace allowed to deploy this contract, false otherwise
     * @type {boolean}
     * @memberof ContractTemplateDto
     */
    'canDeploy'?: boolean;
    /**
     * The type of the contract template
     * @type {string}
     * @memberof ContractTemplateDto
     */
    'type'?: ContractTemplateDtoTypeEnum;
    /**
     *
     * @type {string}
     * @memberof ContractTemplateDto
     */
    'implementationContractId'?: string;
}
export declare const ContractTemplateDtoInitializationPhaseEnum: {
    readonly OnDeployment: "ON_DEPLOYMENT";
    readonly PostDeployment: "POST_DEPLOYMENT";
};
export type ContractTemplateDtoInitializationPhaseEnum = typeof ContractTemplateDtoInitializationPhaseEnum[keyof typeof ContractTemplateDtoInitializationPhaseEnum];
export declare const ContractTemplateDtoTypeEnum: {
    readonly FungibleToken: "FUNGIBLE_TOKEN";
    readonly NonFungibleToken: "NON_FUNGIBLE_TOKEN";
    readonly NonToken: "NON_TOKEN";
    readonly TokenExtension: "TOKEN_EXTENSION";
    readonly TokenUtility: "TOKEN_UTILITY";
};
export type ContractTemplateDtoTypeEnum = typeof ContractTemplateDtoTypeEnum[keyof typeof ContractTemplateDtoTypeEnum];
