{"version":3,"file":"sk-front-lib-model.mjs","sources":["../../../projects/sk-front-lib/model/src/lib/audit.ts","../../../projects/sk-front-lib/model/src/lib/user.ts","../../../projects/sk-front-lib/model/src/lib/file.ts","../../../projects/sk-front-lib/model/src/lib/filetype.ts","../../../projects/sk-front-lib/model/src/lib/article.ts","../../../projects/sk-front-lib/model/src/lib/board.ts","../../../projects/sk-front-lib/model/src/lib/product.ts","../../../projects/sk-front-lib/model/src/lib/document.ts","../../../projects/sk-front-lib/model/src/lib/cart.ts","../../../projects/sk-front-lib/model/src/lib/etc.ts","../../../projects/sk-front-lib/model/src/lib/promotion.ts","../../../projects/sk-front-lib/model/src/lib/order.ts","../../../projects/sk-front-lib/model/src/lib/payment.ts","../../../projects/sk-front-lib/model/src/lib/shipping.ts","../../../projects/sk-front-lib/model/src/lib/nicepay.ts","../../../projects/sk-front-lib/model/src/lib/tosspay.ts","../../../projects/sk-front-lib/model/src/lib/point.ts","../../../projects/sk-front-lib/model/src/lib/coupon.ts","../../../projects/sk-front-lib/model/src/lib/comment.ts","../../../projects/sk-front-lib/model/src/lib/contact.ts","../../../projects/sk-front-lib/model/src/lib/grid.ts","../../../projects/sk-front-lib/model/src/sk-front-lib-model.ts"],"sourcesContent":["export interface IAudit {\n    createdBy?: string;\n    createdDate?: string;\n    updatedBy?: string;\n    updatedDate?: string;\n}\n\nexport class Audit {\n    public createdBy: string;\n    public createdDate: string;\n    public updatedBy: string;\n    public updatedDate: string;\n\n    constructor(data: IAudit = {}) {\n        if (data === null) {\n            data = {};\n        }\n\n        this.createdBy = data.createdBy || '';\n        this.createdDate = data.createdDate || '';\n        this.updatedBy = data.updatedBy || '';\n        this.updatedDate = data.updatedDate || '';\n    }\n}\n","import {Audit, IAudit} from './audit';\n\nexport interface SkUserCount {\n    total?: number;\n    trash?: number;\n}\n\nexport enum SkUserRoleName {\n    Admin = 'ROLE_ADMIN',\n    Developer = 'ROLE_DEVELOPER',\n    Manager = 'ROLE_MANAGER',\n    User = 'ROLE_USER',\n    Dealer = 'ROLE_DEALER',\n    Leave = 'ROLE_LEAVE',\n    Affiliate = 'ROLE_AFFILIATE'\n}\n\nexport interface ISkUserRole {\n    name: SkUserRoleName;\n}\n\nexport interface ISkUser extends IAudit {\n    id?: number;\n    email?: string;\n    nickname?: string;\n    emailValid?: boolean;\n    roles?: ISkUserRole[];\n}\n\nexport class SkUser extends Audit {\n    id: number;\n    email: string;\n    nickname: string;\n    emailValid: boolean;\n    roles: ISkUserRole[];\n\n    // transient values\n    roleNames: SkUserRoleName[];\n\n    constructor(data: ISkUser = {}) {\n        super(data);\n\n        this.id = data.id;\n        this.email = data.email;\n        this.nickname = data.nickname;\n        this.emailValid = data.emailValid || false;\n        this.roles = data.roles || [];\n\n        // set transient values\n        this.roleNames = this.roles.map(value => value.name);\n\n    }\n\n    hasRole(role: SkUserRoleName): boolean {\n        return this.roleNames.indexOf(role) > -1;\n    }\n\n    hasRoleFromArray(roles: SkUserRoleName[] = []): boolean {\n        if (!roles || roles.length === 0) { return false; }\n\n        let result = false;\n        roles.forEach(role => {\n            result = result || this.hasRole(role);\n        });\n\n        return result;\n    }\n\n    isEmpty(): boolean {\n        return !this.id;\n    }\n\n    isAnonymous(): boolean {\n        return this.isEmpty();\n    }\n\n    isAdmin(): boolean {\n        return this.hasRole(SkUserRoleName.Admin);\n    }\n\n    isDeveloper(): boolean {\n        return this.hasRole(SkUserRoleName.Developer);\n    }\n\n    isManager(): boolean {\n        return this.hasRole(SkUserRoleName.Manager);\n    }\n\n    isDealer(): boolean {\n        return this.hasRole(SkUserRoleName.Dealer);\n    }\n\n    isUser(): boolean {\n        return this.hasRole(SkUserRoleName.User);\n    }\n\n    isAdminAccessable(): boolean {\n        return this.isAdmin() || this.isDeveloper() || this.isManager();\n    }\n}\n\nexport interface SkUserSignup {\n    email: string;\n    password: string;\n    passwordConfirm: string;\n    nickname: string;\n}\n\nexport interface ISkAuthor {\n    id?: number;\n    nickname?: number;\n    email?: number;\n}\n","import {Audit, IAudit} from './audit';\n\nexport interface ISkFile extends IAudit {\n    id?: number;\n    mime?: string;\n    fileSize?: number;\n    sourceFilename?: string;\n    ext?: string;\n    uploadedFilename?: string;\n    uploadedPath?: string;\n    isValid?: boolean;\n    isPrivate?: boolean;\n}\n\nexport class SkFile extends Audit {\n    id: number;\n    mime: string;\n    fileSize: number;\n    sourceFilename: string;\n    ext: string;\n    uploadedFilename: string;\n    uploadedPath: string;\n    isValid: boolean;\n    isPrivate: boolean;\n\n    constructor(data: ISkFile = {}) {\n        super(data);\n        Object.assign(this, data);\n    }\n}\n","import {SkFile} from './file';\n\nexport class FileType {\n    /*  MS office  */\n    public static mime_doc: string[] = [\n        'application/msword',\n        'application/msword',\n        'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n        'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n        'application/vnd.ms-word.document.macroEnabled.12',\n        'application/vnd.ms-word.template.macroEnabled.12'\n    ];\n    public static mime_xsl: string[] = [\n        'application/vnd.ms-excel',\n        'application/vnd.ms-excel',\n        'application/vnd.ms-excel',\n        'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n        'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n        'application/vnd.ms-excel.sheet.macroEnabled.12',\n        'application/vnd.ms-excel.template.macroEnabled.12',\n        'application/vnd.ms-excel.addin.macroEnabled.12',\n        'application/vnd.ms-excel.sheet.binary.macroEnabled.12'\n    ];\n    public static mime_ppt: string[] = [\n        'application/vnd.ms-powerpoint',\n        'application/vnd.ms-powerpoint',\n        'application/vnd.ms-powerpoint',\n        'application/vnd.ms-powerpoint',\n        'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n        'application/vnd.openxmlformats-officedocument.presentationml.template',\n        'application/vnd.openxmlformats-officedocument.presentationml.slideshow',\n        'application/vnd.ms-powerpoint.addin.macroEnabled.12',\n        'application/vnd.ms-powerpoint.presentation.macroEnabled.12',\n        'application/vnd.ms-powerpoint.presentation.macroEnabled.12',\n        'application/vnd.ms-powerpoint.slideshow.macroEnabled.12'\n    ];\n\n    /* PSD */\n    public static mime_psd: string[] = [\n        'image/photoshop',\n        'image/x-photoshop',\n        'image/psd',\n        'application/photoshop',\n        'application/psd',\n        'zz-application/zz-winassoc-psd'\n    ];\n\n    /* Compressed files */\n    public static mime_compress: string[] = [\n        'application/x-gtar',\n        'application/x-gcompress',\n        'application/compress',\n        'application/x-tar',\n        'application/x-rar-compressed',\n        'application/octet-stream',\n        'application/x-zip-compressed',\n        'application/zip-compressed',\n        'application/x-7z-compressed',\n        'application/gzip',\n        'application/x-bzip2'\n    ];\n\n    public static getMimeClass(file: SkFile | File): string {\n        let mime = '';\n        let name = '';\n        if (file instanceof SkFile) {\n            mime = (file as SkFile).mime;\n            name = (file as SkFile).sourceFilename;\n        }\n\n        if (file instanceof File) {\n            mime = (file as File).type;\n            name = (file as File).name;\n        }\n\n        let mimeClass = 'application';\n        if (this.mime_psd.indexOf(mime) !== -1) {\n            mimeClass = 'image';\n        } else if (mime.match('image.*')) {\n            mimeClass = 'image';\n        } else if (mime.match('video.*')) {\n            mimeClass = 'video';\n        } else if (mime.match('audio.*')) {\n            mimeClass = 'audio';\n        } else if (mime === 'application/pdf') {\n            mimeClass = 'pdf';\n        } else if (this.mime_compress.indexOf(mime) !== -1) {\n            mimeClass = 'compress';\n        } else if (this.mime_doc.indexOf(mime) !== -1) {\n            mimeClass = 'doc';\n        } else if (this.mime_xsl.indexOf(mime) !== -1) {\n            mimeClass = 'xls';\n        } else if (this.mime_ppt.indexOf(mime) !== -1) {\n            mimeClass = 'ppt';\n        }\n        if (mimeClass === 'application') {\n            mimeClass = this.fileTypeDetection(name);\n        }\n\n        return mimeClass;\n    }\n\n    public static fileTypeDetection(inputFilename: string): string {\n        const types: { [ key: string ]: string } = {\n            jpg: 'image',\n            jpeg: 'image',\n            tif: 'image',\n            psd: 'image',\n            bmp: 'image',\n            png: 'image',\n            nef: 'image',\n            tiff: 'image',\n            cr2: 'image',\n            dwg: 'image',\n            cdr: 'image',\n            ai: 'image',\n            indd: 'image',\n            pin: 'image',\n            cdp: 'image',\n            skp: 'image',\n            stp: 'image',\n            '3dm': 'image',\n            mp3: 'audio',\n            wav: 'audio',\n            wma: 'audio',\n            mod: 'audio',\n            m4a: 'audio',\n            compress: 'compress',\n            zip: 'compress',\n            rar: 'compress',\n            '7z': 'compress',\n            lz: 'compress',\n            z01: 'compress',\n            bz2: 'compress',\n            gz: 'compress',\n            alz: 'compress',\n            pdf: 'pdf',\n            xls: 'xls',\n            xlsx: 'xls',\n            ods: 'xls',\n            mp4: 'video',\n            avi: 'video',\n            wmv: 'video',\n            mpg: 'video',\n            mts: 'video',\n            flv: 'video',\n            '3gp': 'video',\n            vob: 'video',\n            m4v: 'video',\n            mpeg: 'video',\n            m2ts: 'video',\n            mov: 'video',\n            doc: 'doc',\n            docx: 'doc',\n            eps: 'doc',\n            txt: 'doc',\n            odt: 'doc',\n            rtf: 'doc',\n            ppt: 'ppt',\n            pptx: 'ppt',\n            pps: 'ppt',\n            ppsx: 'ppt',\n            key: 'ppt',\n            odp: 'ppt'\n        };\n\n        const chunks = inputFilename.split('.');\n        if (chunks.length < 2) {\n            return 'application';\n        }\n        const extension = chunks[ chunks.length - 1 ].toLowerCase();\n        if (types[ extension ] === undefined) {\n            return 'application';\n        } else {\n            return types[ extension ];\n        }\n    }\n}\n","import {ISkFile, SkFile} from \"./file\";\nimport {Audit, IAudit} from \"./audit\";\n\nexport interface ISkArticle extends IAudit {\n    id?: number;\n    content?: string;\n    images?: ISkFile[];\n}\n\nexport class SkArticle extends Audit {\n    id: number;\n    content: string;\n    images: SkFile[];\n\n    constructor(data: ISkArticle = {}) {\n        super(data);\n        this.id = data.id;\n        this.content = data.content;\n        this.images = (data.images || []).map(item => new SkFile(item));\n    }\n}\n","import {Audit, IAudit} from \"./audit\";\nimport {ISkDocumentPublicList} from \"./document\";\nimport {ApiPageable} from \"sk-front-lib/api\";\n\nexport interface ISkBoard extends IAudit {\n    id?: number;\n    url?: string;\n    title?: string;\n    subtitle?: string;\n    skin?: string;\n\n    showSupport?: boolean;\n\n    permissions?: {\n        publicRead?: boolean;\n        publicWrite?: boolean;\n        secretRead?: boolean;\n        secretWrite?: boolean;\n        useNotice?: boolean;\n    }\n\n}\n\nexport class SkBoard extends Audit {\n    id: number;\n    url: string;\n    title: string;\n    subtitle?: string;\n    skin: string;\n\n    showSupport: boolean;\n\n    permissions: {\n        publicRead?: boolean;\n        publicWrite?: boolean;\n        secretRead?: boolean;\n        secretWrite?: boolean;\n        useNotice?: boolean;\n    };\n\n\n    constructor(data: ISkBoard = {}) {\n        super(data);\n        Object.assign(this,\n            {\n                skin: 'default',\n                showSupport: false,\n                permissions: {\n                    publicRead: true,\n                    publicWrite: false,\n                    secretRead: false,\n                    secretWrite: false,\n                    useNotice: false\n                }\n            },\n            data\n        );\n    }\n\n    isEmpty(): boolean {\n        return !this.id;\n    }\n}\n\nexport interface ISkBoardDetail extends ISkBoard {\n    noticeDocuments?: ISkDocumentPublicList[];\n    documents?: ApiPageable<ISkDocumentPublicList>;\n}\n","import { ISkArticle, SkArticle } from './article';\nimport { Audit, IAudit } from './audit';\nimport { ISkDocumentPublicList } from './document';\nimport {\n    SkBrand,\n    SkCatalogEmbed,\n    SkCategory,\n    SkKeyword,\n    SkNaverEpEmbed,\n    SkOpengraph,\n    SkSubCategoryItem,\n    SkValueType\n} from './etc';\nimport { ISkFile, SkFile } from './file';\nimport { SkPaymentStatus } from './payment';\nimport { ISkPromotionGiftGroupItem, ISkPromotionPublicList } from './promotion';\n\nexport interface SkProductCount {\n    total?: number;\n    trash?: number;\n}\n\nexport interface SkProductStockCount {\n    totalIn?: number;\n    totalOut?: number;\n    current?: number;\n}\n\nexport enum SkProductType {\n    Package = 'PACKAGE',\n    Single = 'SINGLE'\n}\n\nexport enum SkProductStuffType {\n    Hardware = 'HARDWARE',\n    Software = 'SOFTWARE',\n    Furniture = 'FURNITURE'\n}\n\nexport enum SkProductStatus {\n    Preorder = 'PREORDER',\n    Onsale = 'ONSALE',\n    Soldout = 'SOLDOUT',\n    Deactivate = 'DEACTIVATE'\n}\n\nexport enum SkProductAccessPolicy {\n    Public = 'PUBLIC',\n    Hidden = 'HIDDEN',\n    PrivateLink = 'PRIVATE_LINK',\n    PrivateUser = 'PRIVATE_USER'\n}\n\nexport interface ISkProductBrand {\n    id?: number;\n    product?: ISkProduct;\n    brand?: SkBrand;\n    isDefault?: boolean;\n}\n\nexport class SkProductBrand {\n    id: number;\n    product: SkProduct;\n    brand: SkBrand;\n    isDefault: boolean;\n\n    constructor(data: ISkProductBrand = {}) {\n        this.id = data.id;\n        this.product = data.product ? new SkProduct(data.product) : null;\n        this.brand = data.brand;\n        this.isDefault = data.isDefault || false;\n    }\n}\n\nexport interface ISkProductCategory {\n    id?: number;\n    product?: ISkProduct;\n    category?: SkCategory;\n    isDefault?: boolean;\n}\n\nexport class SkProductCategory {\n    id: number;\n    product: SkProduct;\n    category: SkCategory;\n    isDefault: boolean;\n\n    constructor(data: ISkProductCategory = {}) {\n        this.id = data.id;\n        this.product = data.product ? new SkProduct(data.product) : null;\n        this.category = data.category;\n        this.isDefault = data.isDefault || false;\n    }\n}\n\nexport interface ISkProductImage {\n    id?: number;\n    product?: ISkProduct;\n    file?: ISkFile;\n    orderIndex?: number;\n}\n\nexport class SkProductImage {\n    id: number;\n    product: SkProduct;\n    file: SkFile;\n    orderIndex: number;\n\n    constructor(data: ISkProductImage = {}) {\n        this.id = data.id;\n        this.product = data.product ? new SkProduct(data.product) : new SkProduct();\n        this.file = data.file ? new SkFile(data.file) : new SkFile();\n        this.orderIndex = data.orderIndex || -1;\n    }\n}\n\nexport enum SkProductOptionType {\n    Base = 'BASE',           // 기본옵션 (상품의 가격 범위 산정에 영향을 미침)\n    Additional = 'ADDITIONAL',     // 부가옵션 (상품의 가격 범위 산정에 영향을 미치지 않는다.)\n    Multiple = 'MULTIPLE'        // 추가옵션 (가격 범위 산정에 영향을 미치지 않으며, 중복으로 선택 가능하다)\n}\n\nexport interface ISkProductOption {\n    id?: number;\n    type?: SkProductOptionType;\n    title?: string;\n    values?: ISkProductOptionValue[];\n    promotionOption?: boolean;\n}\n\nexport interface ISkProductOptionValue {\n    id?: number;\n    title?: string;\n    value?: string;\n    addedPrice?: number;\n}\n\nexport interface ISkProductOptionAnswer {\n    id?: number;\n    value?: any;\n}\n\nexport interface ISkProductPackage {\n    id?: number;\n    children?: ISkProduct;\n    hidden?: boolean;\n    share?: number;\n    amount?: number;\n}\n\nexport class SkProductPackage {\n    id: number;\n    children: SkProduct;\n    hidden: boolean;\n    share: number;\n    amount: number;\n\n    constructor(data: ISkProductPackage = {}) {\n        this.id = data.id;\n        this.children = data.children ? new SkProduct(data.children) : null;\n        this.hidden = data.hidden || false;\n        this.share = data.share || (data.children ? data.children.price.retail : 0);\n        this.amount = data.amount || 1;\n    }\n}\n\nexport interface SkProductPrice {\n    message?: string;\n    quotaFree?: boolean;\n    paymentNaver?: boolean;\n    original?: number;\n    retail?: number;\n    pointAmount?: number;\n    pointType?: SkValueType;\n    rebateAmount?: number;\n    rebateType?: SkValueType;\n    maxUsablePoint?: number;\n    maxBuyCount?: number;\n    wholesaleNormal?: number;\n    wholesaleDealer?: number;\n    wholesaleConditionA?: number;\n    wholesaleConditionB?: number;\n    wholesaleConditionC?: number;\n    useVarPrice?: boolean;\n    useVarPriceXc?: boolean;\n    varCurrency?: string;\n    varFormula?: string;\n    varMap?: number;\n    varCost?: number;\n    varAddAmount?: number;\n    varAddPercent?: number;\n    varUpdatedDate?: string;\n}\n\nexport interface SkProductStock {\n    useStockHistory?: boolean;\n    useAutoStatusChange?: boolean;\n    useXchangeApi?: boolean;\n}\n\nexport interface SkProductEDelivery {\n    sku?: string;\n    downloadLink?: string;\n    template?: string;\n}\n\nexport interface ISkProductStockHistory extends IAudit {\n    id?: number;\n    used?: boolean;\n    serial?: string;\n    memo?: string;\n}\n\n\nexport interface ISkProduct extends IAudit {\n    id?: number;\n    title?: string;\n    code?: string;\n    url?: string;\n    type?: SkProductType;\n    stuffType?: SkProductStuffType;\n    status?: SkProductStatus;\n    preorderStartDate?: string;\n    brands?: ISkProductBrand[];\n    categories?: ISkProductCategory[];\n    keywords?: SkKeyword[];\n    images?: ISkProductImage[];\n    accessPolicy?: SkProductAccessPolicy;\n    accessPolicyValue?: string;\n    price?: SkProductPrice;\n    stockConfig?: SkProductStock;\n    edelivery?: SkProductEDelivery;\n    furnitureAssembly?: boolean;\n    opengraph?: SkOpengraph;\n    naverep?: SkNaverEpEmbed;\n    catalog?: SkCatalogEmbed;\n    options?: ISkProductOption[];\n    articleDesc?: ISkArticle;\n    articleSpec?: ISkArticle;\n    packages?: ISkProductPackage[];\n    activated?: boolean;\n    listOrder?: number;\n    viewCount?: number;\n    simpleText?: string;\n}\n\nexport class SkProduct extends Audit {\n    id: number;\n    title: string;\n    code?: string;\n    url?: string;\n    type: SkProductType;\n    stuffType: SkProductStuffType;\n    status: SkProductStatus;\n    preorderStartDate: string;\n    brands: SkProductBrand[];\n    categories: SkProductCategory[];\n    keywords: SkKeyword[];\n    images: SkProductImage[];\n    accessPolicy: SkProductAccessPolicy;\n    accessPolicyValue: string;\n    price: SkProductPrice;\n    stockConfig: SkProductStock;\n    edelivery: SkProductEDelivery;\n    furnitureAssembly: boolean;\n    opengraph: SkOpengraph;\n    naverep: SkNaverEpEmbed;\n    catalog: SkCatalogEmbed;\n    options: ISkProductOption[];\n    articleDesc: ISkArticle;\n    articleSpec: ISkArticle;\n    packages: SkProductPackage[];\n    activated: boolean;\n    listOrder: number;\n    viewCount: number;\n    simpleText: string;\n\n    constructor(data: ISkProduct = {}) {\n        super(data);\n\n        this.id = data.id;\n        this.title = data.title;\n        this.code = data.code;\n        this.url = data.url;\n        this.type = data.type || SkProductType.Single;\n        this.stuffType = data.stuffType;\n        this.status = data.status || SkProductStatus.Onsale;\n        this.preorderStartDate = data.preorderStartDate;\n        this.brands = (data.brands || []).map(item => new SkProductBrand(item));\n        this.categories = (data.categories || []).map(item => new SkProductCategory(item));\n        this.keywords = (data.keywords || []);\n        this.images = (data.images || []).map(item => new SkProductImage(item));\n        this.accessPolicy = data.accessPolicy || SkProductAccessPolicy.Public;\n        this.accessPolicyValue = data.accessPolicyValue;\n        this.price = Object.assign({}, {\n            message: '',\n            quotaFree: false,\n            paymentNaver: false,\n            original: 0,\n            retail: 0,\n            pointAmount: 0,\n            pointType: 'AMOUNT',\n            maxUsablePoint: 50,\n            wholesaleNormal: 0,\n            wholesaleDealer: 0,\n            wholesaleConditionA: 0,\n            wholesaleConditionB: 0,\n            wholesaleConditionC: 0,\n            useVarPrice: false,\n            useVarPriceXc: false,\n            varCurrency: 'USD',\n            varFormula: '',\n            varMap: 0,\n            varCost: 0,\n            varAddAmount: 0,\n            varAddPercent: 0,\n            varUpdatedDate: null\n        }, data.price);\n        this.stockConfig = Object.assign({}, {useStockHistory: false, useAutoStatusChange: false, useXchangeApi: false}, data.stockConfig);\n        this.opengraph = Object.assign({}, {ogTitle: '', ogAutoFill: true, ogDesc: '', ogImage: null}, data.opengraph);\n        this.naverep = Object.assign({}, {naverepShow: true, naverepCustom: false, naverepTitle: '', naverepCategory: ''}, data.naverep);\n        this.catalog = Object.assign({}, {catalogShow: true, catalogCustom: false, catalogTitle: '', catalogCategory: null}, data.catalog );\n        this.edelivery = Object.assign({}, {sku: '', downloadLink: '', template: ''}, data.edelivery);\n        this.furnitureAssembly = data.furnitureAssembly || false;\n        this.options = data.options || [];\n        this.articleDesc = data.articleDesc ? new SkArticle(data.articleDesc) : new SkArticle();\n        this.articleSpec = data.articleSpec ? new SkArticle(data.articleSpec) : new SkArticle();\n        this.packages = (data.packages || []).map(item => new SkProductPackage(item));\n        this.activated = data.activated || false;\n        this.listOrder = data.listOrder || 0;\n        this.viewCount = data.viewCount || 0;\n        this.simpleText = data.simpleText || '';\n    }\n\n    isEmpty(): boolean {\n        return !this.id;\n    }\n}\n\nexport interface SkProductListItem {\n    id?: number;\n    title?: string;\n    code?: string;\n    url?: string;\n    type?: SkProductType;\n    stuffType?: SkProductStuffType;\n    status?: SkProductStatus;\n    hasPromotion?: boolean;\n    hasGift?: boolean;\n    realtimeSoftware?: boolean;\n    furnitureAssembly?: boolean;\n    brandName?: string;\n    brandId?: number;\n    brands?: ISkProductBrandItem[];\n    overseas?: boolean;\n\n    wishlistCount?: number;\n    wishlistMe?: boolean;\n    image?: ISkFile;\n\n    quotaFree?: boolean;\n    priceMessage?: string;\n    priceOriginal?: number;\n    priceDiscounted?: number;\n    priceMin?: number;\n    priceMax?: number;\n    maxBuyCount?: number;\n\n    packageItems?: ISkProductPackageListItem[];\n\n    accessPolicy?: SkProductAccessPolicy;\n    accessPolicyValue?: string;\n}\n\nexport interface ISkProductDetail extends SkProductListItem {\n    point?: number;\n    includedInPackage?: boolean;\n    images?: ISkFile[];\n    simpleText?: string;\n    articleDesc?: ISkArticle;\n    articleSpec?: ISkArticle;\n    opengraph?: SkOpengraph;\n    paymentNaver?: boolean;\n    packageItems?: ISkProductPackageListItem[];\n    linkedSeries?: ISkProductDetailSeries[];\n    linkedDocuments?: ISkDocumentPublicList[];\n    linkedPromotions?: ISkPromotionPublicList[];\n    linkedPromotionGiftGroups?: ISkPromotionGiftGroupItem[];\n}\n\nexport interface ISkProductPackageListItem {\n    id?: number;\n    product?: SkProductListItem;\n    showSpec?: boolean;\n    showDesc?: boolean;\n    orderIndex?: number;\n    amount?: number;\n}\n\nexport interface SkProductWishlist {\n    wishlistCount?: number;\n    wishlistMe?: boolean;\n}\n\nexport interface ISkProductDetailSeriesItem {\n    id?: number;\n    title?: string;\n    url?: string;\n}\n\nexport interface ISkProductDetailSeries {\n    id?: number;\n    title?: string;\n    items?: ISkProductDetailSeriesItem[];\n}\n\nexport interface ISkProductFilterData {\n    lowestPrice?: number;\n    highestPrice?: number;\n    minPrice?: number;\n    maxPrice?: number;\n    availableBrands?: SkBrand[];\n    availableCategories?: SkCategory[];\n    availableSubCategories?: SkCategory[];\n    selectedSubCategoryItems?: SkSubCategoryItem[];\n}\n\nexport interface ISkProductBrandItem {\n    id: number;\n    name: string;\n}\n\nexport interface ISkProductPublish {\n    id?: number;\n    productId?: number;\n    status?: SkProductStatus;\n    preorderStartDate?: string;\n    accessPolicy?: SkProductAccessPolicy;\n    actionDate?: string;\n    activated?: boolean;\n}\n\nexport function getSkProductStatusText(status: SkProductStatus) {\n    switch (status) {\n        case SkProductStatus.Deactivate:\n            return '판매 중지';\n        case SkProductStatus.Onsale:\n            return '판매중';\n        case SkProductStatus.Preorder:\n            return '예약판매';\n        case SkProductStatus.Soldout:\n            return '품절';\n        default:\n            return status;\n    }\n}\n\nexport function getSkProductAccessPolicyText(accessPolicy: SkProductAccessPolicy) {\n    switch (accessPolicy) {\n        case SkProductAccessPolicy.Hidden:\n            return '어드민 외 접근불가';\n        case SkProductAccessPolicy.PrivateLink:\n            return '링크로만 접근 가능';\n        case SkProductAccessPolicy.PrivateUser:\n            return '해당 유저만 접근 가능';\n        case SkProductAccessPolicy.Public:\n            return '공개';\n        default:\n            return accessPolicy;\n    }\n}\n\n\n","import {Audit, IAudit} from \"./audit\";\nimport {ISkFile, SkFile} from \"./file\";\nimport {ISkArticle, SkArticle} from \"./article\";\nimport {ISkBoard, SkBoard} from \"./board\";\nimport { ISkProduct, SkProduct, SkProductAccessPolicy, SkProductStatus } from \"./product\";\nimport {SkCategory, SkOpengraph} from \"./etc\";\nimport {ISkUser, SkUser} from \"./user\";\n\nexport interface SkDocumentCount {\n    total?: number;\n    trash?: number;\n}\n\nexport interface ISkDocumentSibling {\n    id?: number;\n    url?: string;\n}\n\nexport enum SkDocumentType {\n    Editorial = 'EDITORIAL',\n    Studio = 'STUDIO',\n    Post = 'POST',\n    Page = 'PAGE'\n}\n\nexport interface ISkDocumentAttachment {\n    id?: number;\n    file?: any;\n    title?: string;\n    url?: string;\n}\n\nexport class SkDocumentAttachment {\n    id: number;\n    file: SkFile;\n    title: string;\n    url: string;\n\n    constructor(data: ISkDocumentAttachment = {}) {\n        this.id = data.id;\n        this.file = new SkFile(data.file);\n        this.title = data.title;\n        this.url = data.url;\n    }\n}\n\nexport interface ISkDocument extends IAudit {\n    id?: number;\n    type?: SkDocumentType;\n    url?: string;\n    title?: string;\n    author?: ISkUser;\n    activate?: boolean;\n    published?: boolean;\n    secret?: boolean;\n    notice?: boolean;\n    article?: ISkArticle;\n    image?: ISkFile;\n    imageAlt?: ISkFile;\n    board?: ISkBoard;\n    category?: SkCategory;\n    linkedProduct?: ISkProduct[];\n    attachment?: ISkDocumentAttachment[];\n    viewCount?: number;\n    listOrder?: number;\n    opengraph?: SkOpengraph;\n}\n\nexport class SkDocument extends Audit {\n    id: number;\n    type: SkDocumentType;\n    url: string;\n    title: string;\n    author: SkUser;\n    activate: boolean;\n    published: boolean;\n    secret: boolean;\n    notice: boolean;\n    article: SkArticle;\n    image: SkFile;\n    imageAlt: SkFile;\n    board: SkBoard;\n    category: SkCategory;\n    linkedProduct: SkProduct[];\n    attachment: SkDocumentAttachment[];\n    viewCount: number;\n    listOrder: number;\n    opengraph: SkOpengraph;\n\n    constructor(data: ISkDocument = {}) {\n        super(data);\n\n        this.id = data.id;\n        this.type = data.type;\n        this.url = data.url;\n        this.title = data.title;\n        this.author = data.author ? new SkUser(data.author) : null;\n        this.activate = data.activate || false;\n        this.published = data.published || false;\n        this.secret = data.secret || false;\n        this.notice = data.notice || false;\n        this.article = data.article ? new SkArticle(data.article) : null;\n        this.image = data.image ? new SkFile(data.image) : null;\n        this.imageAlt = data.imageAlt ? new SkFile(data.imageAlt): null;\n        this.board = data.board ? new SkBoard(data.board) : null;\n        this.category = data.category;\n        this.linkedProduct = (data.linkedProduct || []).map(item => new SkProduct(item));\n        this.attachment = (data.attachment || []).map(item => new SkDocumentAttachment(item));\n        this.viewCount = data.viewCount;\n        this.listOrder = data.listOrder || 0;\n        this.opengraph = Object.assign({}, {ogTitle: '', ogAutoFill: true, ogDesc: '', ogImage: null}, data.opengraph);\n    }\n\n    isEmpty(): boolean {\n        return !this.id;\n    }\n}\n\nexport interface ISkDocumentPublicList {\n    id?: number;\n    url?: string;\n    type?: SkDocumentType;\n    category?: SkCategory;\n    title?: string;\n    boardUrl?: string;\n    boardName?: string;\n    desc?: String;\n    image?: ISkFile;\n    imageAlt?: ISkFile;\n    subImages?: number[];\n    authorId?: number;\n    authorNickname?: string;\n    authorEmail?: string;\n    createdDate?: string;\n}\n\nexport interface ISkDocumentPublish {\n    id?: number;\n    documentId?: number;\n    published?: boolean;\n    notice?: boolean;\n    listOrder?: boolean;\n    actionDate?: string;\n    activated?: boolean;\n}\n","import { ISkProductDetail, ISkProductOption, ISkProductOptionValue } from './product';\nimport { ISkPromotionGiftItem } from './promotion';\n\nexport interface ISkCartOption {\n    id?: number;\n    option?: ISkProductOption;\n    value?: ISkProductOptionValue;\n    amount?: number;\n}\n\nexport interface ISkCart {\n    id?: number;\n    product?: ISkProductDetail;\n    amount?: number;\n    options?: ISkCartOption[];\n    gifts?: ISkPromotionGiftItem[]\n}\n\nexport class SkCartOption {\n    id: number;\n    option: ISkProductOption;\n    value: ISkProductOptionValue;\n    amount: number;\n\n    constructor(data: ISkCartOption = {}) {\n        this.id = data.id || null;\n        this.option = data.option;\n        this.value = data.value;\n        this.amount = data.amount || 1;\n    }\n}\n\nexport class SkCart {\n    id: number;\n    product: ISkProductDetail;\n    amount: number;\n    options: SkCartOption[];\n    gifts: ISkPromotionGiftItem[];\n\n    constructor(data: ISkCart = {}) {\n        this.id = data.id || null;\n        this.product = data.product;\n        this.amount = data.amount || 1;\n        this.options = (data.options || []).map(item => new SkCartOption(item));\n        this.gifts = data.gifts || [];\n    }\n\n    getSinglePrice(): number {\n        const basePrice = Math.min(this.product.priceOriginal, this.product.priceDiscounted);\n        const optionPrice = (this.options || []).map(item => item.value.addedPrice * item.amount).reduce((previousValue, currentValue) => previousValue + currentValue, 0);\n        return basePrice + optionPrice;\n    }\n\n    getTotalPrice(): number {\n        return this.getSinglePrice() * this.amount;\n    }\n\n    checkOptionExists(): boolean {\n        return this.options.filter(option => !!option.value).length > 0;\n    }\n}\n\nexport interface ISkCartOptionCreate {\n    option: number;\n    value: number;\n}\n\nexport interface ISkCartCreate {\n    product: number;\n    amount: number;\n    selectedOptions: ISkCartOptionCreate[];\n    selectedGifts: {id: number}[];\n}\n\n","import { ApiPageable } from 'sk-front-lib/api';\nimport { ISkArticle } from './article';\nimport { IAudit } from './audit';\nimport { ISkDocumentPublicList } from './document';\nimport { ISkFile } from './file';\nimport { SkProduct, SkProductListItem } from './product';\nimport { ISkPromotionPublicList } from './promotion';\nimport { ISkUser } from './user';\n\nexport interface SkOpengraph {\n    ogAutoFill?: boolean;\n    ogTitle?: string;\n    ogDesc?: string;\n    ogImage?: ISkFile;\n}\n\nexport interface SkNaverEpEmbed {\n    naverepShow?: boolean;\n    naverepCustom?: boolean;\n    naverepTitle?: string;\n    naverepCategory?: string;\n}\n\nexport interface SkCatalogEmbed {\n    catalogShow?: boolean;\n    catalogCustom?: boolean;\n    catalogTitle?: string;\n    catalogCategory?: number;\n}\n\nexport enum SkValueType {\n    Amount = 'AMOUNT',\n    Percent = 'PERCENT',\n    Fixed = 'FIXED',\n    Custom = 'CUSTOM'\n}\n\nexport enum SkGiftType {\n    Real = 'REAL',\n    Custom = 'CUSTOM'\n}\n\nexport interface SkBrand {\n    id?: number;\n    title?: string;\n    content?: string;\n    showDistribution?: boolean;\n    listOrder?: number;\n    image?: ISkFile;\n    opengraph?: SkOpengraph;\n    selected?: boolean;\n    disabled?: boolean;\n    hidden?: boolean;\n}\n\nexport enum SkCategoryType {\n    Product = 'PRODUCT',         // 상품 관련\n    Promotion = 'PROMOTION',       // 프로모션\n    Editorial = 'EDITORIAL',\n    Studio = 'STUDIO',\n    Board = 'BOARD'\n}\n\nexport interface SkSubCategoryItem {\n    id?: number;\n    title?: string;\n    selected?: boolean;\n    disabled?: boolean;\n    hidden?: boolean;\n}\n\nexport interface SkSubCategory {\n    id?: number;\n    title?: string;\n    children?: SkSubCategoryItem[];\n}\n\nexport interface SkCategory {\n    id?: number;\n    title?: string;\n    selected?: boolean;\n    disabled?: boolean;\n    hidden?: boolean;\n    type?: SkCategoryType;\n    subCategories?: SkSubCategory[];\n    opengraph?: SkOpengraph;\n}\n\nexport interface SkKeyword {\n    id?: number;\n    title?: string;\n}\n\nexport interface ISkAddress {\n    id?: number;\n    title?: string;\n    receiverName?: string;\n    email?: string;\n    phone?: string;\n    phone2?: string;\n    zipCode?: string;\n    address?: string;\n    address2?: string;\n    isDefault?: boolean;\n    customsCode?: string;\n}\n\nexport interface ISkStore {\n    id?: number;\n    name?: string;\n    url?: string;\n    address?: string;\n    phone?: string;\n    email?: string;\n    mapKakaoUrl?: string;\n    mapNaverUrl?: string;\n    mapGoogleUrl?: string;\n    mapEmbedUrl?: string;\n    showDistribution?: boolean;\n    brands?: SkBrand[];\n}\n\nexport class SkStore {\n    id: number;\n    name: string;\n    url: string;\n    address: string;\n    phone: string;\n    email: string;\n    mapKakaoUrl: string;\n    mapNaverUrl: string;\n    mapGoogleUrl: string;\n    mapEmbedUrl: string;\n    showDistribution: boolean;\n    brands: SkBrand[];\n\n    constructor(data: ISkStore = {}) {\n        Object.assign(this, {\n            name: '',\n            url: '',\n            address: '',\n            phone: '',\n            email: '',\n            mapKakaoUrl: '',\n            mapNaverUrl: '',\n            mapGoogleUrl: '',\n            mapEmbedUrl: '',\n            showDistribution: false,\n            brands: []\n        }, data);\n    }\n}\n\nexport interface ISkSearchResult {\n    product?: ApiPageable<SkProductListItem>;\n    promotion?: ApiPageable<ISkPromotionPublicList>;\n    editorial?: ApiPageable<ISkDocumentPublicList>;\n    studio?: ApiPageable<ISkDocumentPublicList>;\n    etc?: ApiPageable<ISkDocumentPublicList>;\n}\n\nexport interface ISkSearchKeyword {\n    id?: number;\n    keyword?: string;\n}\n\nexport interface ISkShippingFee {\n    id?: number;\n    zipCodeStart?: string;\n    zipCodeEnd?: string;\n    address?: string;\n    fee?: number;\n}\n\nexport interface ISkIdTitleValue {\n    id?: number | string;\n    title?: string;\n    value?: string;\n}\n\nexport interface SkBank {\n    id?: number;\n    name?: string;\n}\n\nexport enum SkAffiliateRequestStatus {\n    Wait = 'WAIT',\n    Approve = 'APPROVE',\n    Deny = 'DENY',\n}\n\nexport enum SkAffiliateTargetType {\n    None = 'NONE',\n    All = 'ALL',\n    Brand = 'BRAND',\n    Category = 'CATEGORY',\n    Product = 'PRODUCT'\n}\n\nexport enum SkAffiliateTargetApply {\n    Include = 'INCLUDE',\n    Exclude = 'EXCLUDE'\n}\n\nexport interface ISkAffiliateTarget {\n    id?: number;\n    type?: SkAffiliateTargetType;\n    apply?: SkAffiliateTargetApply;\n    orderIndex?: number;\n    startDate?: string;\n    endDate?: string;\n    brand?: SkBrand;\n    category?: SkCategory;\n    products?: SkProduct[];\n    rebateAmount?: number;\n    rebateType?: SkValueType;\n    activated?: boolean;\n}\n\nexport interface ISkAffiliateRequest extends IAudit {\n    id: string,\n    status: SkAffiliateRequestStatus,\n    user: ISkUser,\n    name: string,\n    phoneNumber: string,\n    social?: string,\n    desc: ISkArticle,\n    attachment?: ISkFile,\n    denyReason?: string\n}\n\nexport interface ISkAffiliateStatsItem {\n    date?: string;\n    count?: number;\n    sum?: number;\n    sum2?: number;\n\n    rank?: {\n        id?: number;\n        name?: string;\n        count?: number;\n        sum?: number;\n        sum2?: number;\n    }[]\n}\n\nexport interface ISkAffiliateRebateMonthly {\n    id?: number;\n    year?: number;\n    month?: number;\n    totalRebatePoint?: number;\n    totalOrderCount?: number;\n    totalProductView?: number;\n    pointPaid?: boolean;\n    paidDate?: boolean;\n}\n\nexport interface ISkAffiliateStats {\n    dailyProductView?: ISkAffiliateStatsItem[];\n    dailyPurchase?: ISkAffiliateStatsItem[];\n    monthlyProductView?: ISkAffiliateStatsItem[];\n    monthlyPurchase?: ISkAffiliateStatsItem[];\n    monthlyRebates?: ISkAffiliateRebateMonthly[];\n}\n","import { ISkArticle, SkArticle } from './article';\nimport { Audit, IAudit } from './audit';\nimport { SkCategory, SkGiftType, SkOpengraph, SkValueType } from './etc';\nimport { ISkFile, SkFile } from './file';\nimport { ISkProduct, ISkProductOption, SkProduct, SkProductListItem } from './product';\n\nexport enum SkPromotionAccessPolicy {\n    Public = 'PUBLIC',\n    Hidden = 'HIDDEN'\n}\n\nexport enum SkPromotionGiftServeType {\n    All = 'ALL',\n    Select = 'SELECT'\n}\n\nexport interface SkPromotionCount {\n    total?: number;\n    trash?: number;\n}\n\nexport interface ISkPromotionGift {\n    id?: number;\n    product?: ISkProduct;\n    amount?: number;\n\n    type?: SkGiftType;\n    optionTitle?: string;\n    optionValueTitle?: string;\n    optionAddedPrice?: number;\n    customTitle?: string;\n    customImage?: ISkFile;\n    customBrandName?: string;\n    customPrice?: number;\n}\n\nexport class SkPromotionGift {\n    id: number;\n    product: SkProduct;\n    amount: number;\n\n    type: SkGiftType;\n    optionTitle: string;\n    optionValueTitle: string;\n    optionAddedPrice: number;\n    customTitle: string;\n    customImage: ISkFile;\n    customBrandName: string;\n    customPrice: number;\n\n    constructor(data: ISkPromotionGift = {}) {\n        this.id = data.id;\n        this.product = data.product ? new SkProduct(data.product) : null;\n        this.amount = data.amount || 1;\n\n        this.type = data.type || SkGiftType.Real;\n        this.optionTitle = data.optionTitle || '';\n        this.optionValueTitle = data.optionValueTitle || '';\n        this.optionAddedPrice = data.optionAddedPrice || 0;\n        this.customTitle = data.customTitle || '';\n        this.customImage = new SkFile(data.customImage || {});\n        this.customBrandName = data.customBrandName || '';\n        this.customPrice = data.customPrice || 0;\n    }\n}\n\nexport interface ISkPromotionGiftGroup {\n    id?: number;\n    serveType?: SkPromotionGiftServeType;\n    gifts?: ISkPromotionGift[];\n}\n\nexport class SkPromotionGiftGroup {\n    id: number;\n    serveType: SkPromotionGiftServeType;\n    gifts: ISkPromotionGift[];\n\n    constructor(data: ISkPromotionGiftGroup = {}) {\n        this.id = data.id;\n        this.serveType = data.serveType || SkPromotionGiftServeType.All;\n        this.gifts = (data.gifts || []).map(item => new SkPromotionGift(item));\n    }\n}\n\nexport interface ISkPromotionTarget {\n    id?: number;\n    promotion?: ISkPromotion;\n    product?: ISkProduct;\n    isLimited?: boolean;\n    stockAmount?: number;\n    discountType?: SkValueType;\n    discountValue?: number;\n    giftGroups?: ISkPromotionGiftGroup[];\n}\n\nexport class SkPromotionTarget {\n    id: number;\n    promotion: SkPromotion;\n    product: SkProduct;\n    isLimited: boolean;\n    stockAmount: number;\n    discountType: SkValueType;\n    discountValue: number;\n    giftGroups: SkPromotionGiftGroup[];\n\n    constructor(data: ISkPromotionTarget = {}) {\n        this.id = data.id;\n        this.promotion = data.promotion ? new SkPromotion(data.promotion) : null;\n        this.product = data.product ? new SkProduct(data.product) : null;\n        this.isLimited = data.isLimited || false;\n        this.stockAmount = data.stockAmount || 0;\n        this.discountType = data.discountType;\n        this.discountValue = data.discountValue || 0;\n        this.giftGroups = (data.giftGroups || []).map(item => new SkPromotionGiftGroup(item));\n    }\n}\n\nexport interface ISkPromotionCategory {\n    id?: number;\n    category?: SkCategory;\n}\n\nexport class SkPromotionCategory {\n    id: number;\n    category: SkCategory;\n\n    constructor(data: ISkPromotionCategory = {}) {\n        this.id = data.id;\n        this.category = data.category;\n    }\n}\n\nexport interface ISkPromotion extends IAudit {\n    id?: number;\n    title?: string;\n    startDate?: string;\n    endDate?: string;\n    endDateString?: string;\n    rebateString?: string;\n    accessPolicy?: SkPromotionAccessPolicy;\n    categories?: ISkPromotionCategory[];\n    image?: ISkFile;\n    imageAlt?: ISkFile;\n    article?: ISkArticle;\n    benefit?: ISkArticle;\n    targets?: ISkPromotionTarget[];\n    opengraph?: SkOpengraph;\n    listOrder?: number;\n    activated?: boolean;\n}\n\nexport class SkPromotion extends Audit {\n    id: number;\n    title: string;\n    startDate: string;\n    endDate: string;\n    endDateString: string;\n    rebateString: string;\n    accessPolicy?: SkPromotionAccessPolicy;\n    categories?: SkPromotionCategory[];\n    image: SkFile;\n    imageAlt: SkFile;\n    article: SkArticle;\n    benefit: SkArticle;\n    targets: SkPromotionTarget[];\n    opengraph: SkOpengraph;\n    listOrder: number;\n    activated: boolean;\n\n    constructor(data: ISkPromotion = {}) {\n        super(data);\n\n        this.id = data.id;\n        this.title = data.title || '';\n        this.startDate = data.startDate;\n        this.endDate = data.endDate;\n        this.endDateString = data.endDateString || '';\n        this.rebateString = data.rebateString || '';\n        this.accessPolicy = data.accessPolicy || SkPromotionAccessPolicy.Public;\n        this.categories = (data.categories || []).map(item => new SkPromotionCategory(item));\n        this.image = data.image ? new SkFile(data.image) : null;\n        this.imageAlt = data.imageAlt ? new SkFile(data.imageAlt) : null;\n        this.article = data.article ? new SkArticle(data.article) : null;\n        this.benefit = data.benefit ? new SkArticle(data.benefit) : null;\n        this.targets = (data.targets || []).map(item => new SkPromotionTarget(item));\n        this.opengraph = Object.assign({}, {ogTitle: '', ogAutoFill: true, ogDesc: '', ogImage: null}, data.opengraph);\n        this.listOrder = data.listOrder;\n        this.activated = data.activated;\n    }\n\n    isEmpty(): boolean {\n        return !this.id;\n    }\n}\n\nexport interface ISkPromotionGiftItem {\n    id?: number;\n    product?: SkProductListItem;\n    amount?: number;\n    type: SkGiftType;\n    optionTitle: string;\n    optionValueTitle: string;\n    optionAddedPrice: number;\n    customTitle: string;\n    customImage: ISkFile;\n    customBrandName: string;\n    customPrice: number;\n}\n\nexport interface ISkPromotionGiftGroupItem {\n    serveType?: SkPromotionGiftServeType;\n    gifts?: ISkPromotionGiftItem[];\n}\n\nexport interface ISkPromotionTargetItem {\n    productId?: number;\n    product?: SkProductListItem;\n    isLimited?: boolean;\n    stockAmount?: number;\n    discountType?: SkValueType;\n    discountValue?: number;\n    giftGroups?: ISkPromotionGiftGroupItem[];\n    options?: ISkProductOption[];\n}\n\nexport interface ISkPromotionUpdateImage {\n    image?: number;\n    imageAlt?: number;\n}\n\nexport interface ISkPromotionPublicList {\n    id?: number;\n    image?: ISkFile;\n    imageAlt?: ISkFile;\n    title?: string;\n    endDate?: string;\n    endDateString?: string;\n    rebateString?: string;\n}\n\nexport interface ISkPromotionPublicDetail extends ISkPromotionPublicList {\n    content?: string;\n    benefit?: string;\n    targets?: ISkPromotionTargetItem[];\n    opengraph?: SkOpengraph;\n}\n","import {IAudit} from './audit';\nimport {ISkAddress} from './etc';\nimport {ISkFile} from './file';\nimport {ISkPayment} from './payment';\nimport {ISkProductDetail} from './product';\nimport {ISkShipping, SkShippingMethod} from './shipping';\nimport {ISkAuthor, ISkUser, SkUser} from './user';\n\nexport interface ISkOrderCount {\n    total?: number;\n    wait?: number;\n    paid?: number;\n    process?: number;\n    complete?: number;\n    cancel?: number;\n}\n\nexport enum SkOrderType {\n    Normal = 'NORMAL',\n    Admin = 'ADMIN',\n    DEALER = 'DEALER'\n}\n\nexport enum SkOrderStatus {\n    Prepare = 'PREPARE',                // 최초 주문 생성시 적용 상태.\n    Progress = 'PROGRESS',              // 결제 진행중.\n    Wait = 'WAIT',                      // 결제 대기중 (무통장 입금)\n    Paid = 'PAID',                      // 결제 완료.\n    ProcessStart = 'PROCESS_START',     // 결제 후 처리 시작 (사측이 확인한 상태)\n    ProcessPartial = 'PROCESS_PARTIAL', // 결제 후 일부 처리중.\n    Process = 'PROCESS',                // 결제 후 처리중.\n    Complete = 'COMPLETE',              // 결제후 (배송 등 처리까지) 완료.\n    CancelRequest = 'CANCEL_REQUEST',   // 주문 취소 요청\n    CancelSystem = 'CANCEL_SYSTEM',     // 시스템에 의한 자동 취소\n    Cancel = 'CANCEL',                  // 주문 취소\n    Error = 'ERROR'\n}\n\nexport enum SkOrderCancelType {\n    Just = 'JUST',                      // 구매 의사 없음 (변심)\n    ModifyOrder = 'MODIFY_ORDER',       // 주문 정보 변경\n    Wrong = 'WRONG',                    // 다른 상품 잘못 주문\n    Cheaper = 'CHEAPER',                // 타 쇼핑몰에서 더 저렴하게 판매\n    Error = 'ERROR'                     // 상품 정보 오류\n}\n\nexport function getSkOrderCancelTypeText(type: SkOrderCancelType) {\n    switch (type) {\n        case SkOrderCancelType.Just:\n            return '구매 의사 없음 (변심)';\n        case SkOrderCancelType.ModifyOrder:\n            return '주문 정보 변경';\n        case SkOrderCancelType.Wrong:\n            return '다른 상품 잘못 주문';\n        case SkOrderCancelType.Cheaper:\n            return '타 쇼핑몰에서 더 저렴하게 판매';\n        case SkOrderCancelType.Error:\n            return '상품 정보 오류';\n        default:\n            return '코드(' + type + ')';\n    }\n}\n\nexport function getSkOrderStatusText(status: SkOrderStatus) {\n    switch (status) {\n        case SkOrderStatus.Prepare:\n            return '주문 생성중';\n        case SkOrderStatus.Progress:\n            return '결제 진행중';\n        case SkOrderStatus.Wait:\n            return '결제 대기중';\n        case SkOrderStatus.Paid:\n            return '결제 완료';\n        case SkOrderStatus.ProcessStart:\n            return '배송 준비중';\n        case SkOrderStatus.ProcessPartial:\n            return '부분 배송중';\n        case SkOrderStatus.Process:\n            return '배송중';\n        case SkOrderStatus.Complete:\n            return '배송 완료';\n        case SkOrderStatus.CancelRequest:\n            return '주문 취소 요청중'\n        case SkOrderStatus.CancelSystem:\n            return '시스템 취소'\n        case SkOrderStatus.Cancel:\n            return '주문 취소';\n        case SkOrderStatus.Error:\n            return '주문 오류(취소)';\n        default:\n            return '상태코드(' + status + ')';\n    }\n}\n\nexport interface ISkOrderItemOption {\n    id?: number;\n    optionTitle?: string;\n    valueTitle?: string;\n    addedPrice?: number;\n    amount?: number;\n}\n\nexport interface ISkOrderList {\n    id?: string;\n    title?: string;\n    type?: SkOrderType;\n    image?: ISkFile;\n    status?: SkOrderStatus;\n\n    user?: ISkAuthor;\n\n    total?: number;\n    subtotal?: number;\n    shippingFee?: number;\n    usedPoint?: number;\n\n    createdDate?: string;\n}\n\nexport interface ISkOrderDetail {\n    id?: string;\n    title?: string;\n    type?: SkOrderType;\n    status?: SkOrderStatus;\n    receiverName?: string;\n    email?: string;\n    phone?: string;\n    items?: ISkOrderDetailItem[];\n    payment?: ISkPayment;\n    cancelType?: SkOrderCancelType;\n    cancelDesc?: string;\n    refundAccount?: string;\n    shipping?: ISkShipping;\n    overseas?: boolean;\n    customsCode?: string;\n\n    user?: ISkUser;\n\n    memo?: string;\n    total?: number;\n    subtotal?: number;\n    shippingFee?: number;\n    usedPoint?: number;\n    discount?: number;\n    maxUsablePoint?: number;\n    affiliateKey?: string;\n\n    createdDate?: string;\n}\n\nexport class SkOrderDetail {\n    id: string;\n    title: string;\n    type: SkOrderType;\n    status: SkOrderStatus;\n    receiverName: string;\n    email: string;\n    phone: string;\n    items: SkOrderDetailItem[];\n    payment: ISkPayment;\n    cancelType?: SkOrderCancelType;\n    cancelDesc?: string;\n    refundAccount?: string;\n    shipping: ISkShipping;\n    overseas: boolean;\n    customsCode: string;\n\n    user: SkUser;\n\n    memo: string;\n    total: number;\n    subtotal: number;\n    shippingFee: number;\n    usedPoint: number;\n    maxUsablePoint: number;\n    discount: number;\n    affiliateKey?: string;\n\n    createdDate: string;\n\n    constructor(data: ISkOrderDetail = {}) {\n        if (data === null) { data = {}; }\n        Object.assign(this, data);\n\n        this.user = data.user ? new SkUser(data.user) : null;\n        this.items = (data.items || []).map(item => new SkOrderDetailItem(item));\n    }\n}\n\nexport interface ISkOrderDetailItem {\n    id?: number;\n    product?: ISkProductDetail;\n    amount?: number;\n    options?: ISkOrderItemOption[];\n    cartId?: string;\n    price?: number;\n    point?: number;\n    couponDiscount?: number;\n}\n\nexport class SkOrderDetailItem {\n    id: number;\n    product: ISkProductDetail;\n    amount: number;\n    options: ISkOrderItemOption[];\n    cartId: string;\n    price: number;\n    point: number;\n    couponDiscount: number;\n    originalPriceAtMoment: number;\n    discountedPriceAtMoment: number;\n    discountedMemo: string;\n\n    constructor(data: ISkOrderDetailItem = {}) {\n        if (data === null) { data = {}; }\n        Object.assign(this, data);\n    }\n\n    getSinglePrice() {\n        const basePrice = Math.min(this.product.priceOriginal, this.product.priceDiscounted);\n        const optionPrice = (this.options || []).map(option => option.addedPrice * option.amount).reduce((previousValue, currentValue) => previousValue + currentValue, 0);\n\n        return basePrice + optionPrice;\n    }\n\n    getTotalPrice() {\n        return this.getSinglePrice() * this.amount;\n    }\n\n    checkOptionExists(): boolean {\n        return (this.options || []).length > 0;\n    }\n}\n\nexport interface ISkOrderReqProgress {\n    addressData?: ISkAddress;\n    createAddress?: boolean;\n    usePoint?: number;\n    banker?: string;\n    memo?: string;\n    method?: SkShippingMethod;\n    useCoupons?: string[];\n    customsCode?: string;\n}\n\nexport interface ISkOrderLog extends IAudit {\n    id?: number;\n    type?: 'SYSTEM' | 'MEMO';\n    message?: string;\n}\n\nexport interface ISkValidateCoupon {\n    discountAmount?: number;\n    couponData?: {discountAmount: number, title: string, serial: string}[];\n}\n","export enum SkPgType {\n    NicePay = 'NICEPAY',\n    TossPayment = 'TOSS'\n}\n\nexport enum SkPaymentStatus {\n    Transfer = 'TRANSFER',          // 무통장 입금\n    Card = 'CARD',                  // 일반 카드결제\n    Card2 = 'CARD2',                // 무이자 할부 카드결제\n    Naver = 'NAVER',                // 네이버 페이 (주문형)\n    NaverPG = 'NAVER_PG',           // 네이버 페이 (결제형)\n    Kakao = 'KAKAO',                // 카카오 페이\n    Toss = 'TOSS',                  // 토스 페이\n    Payco = 'PAYCO',                // 페이코\n}\n\nexport interface ISkPayment {\n    id?: string;\n    type?: SkPaymentStatus;\n    pgType?: SkPgType;\n    txId?: string;\n    responseCode?: string;\n    responseMessage?: string;\n    cancelCode?: string;\n    cancelMessage?: string;\n    paidPrice?: number;\n    banker?: string;\n    bankExpireDate?: string;\n    cardName?: string;\n    cardQuota?: string;\n    rawResponse?: string;\n    rawCancelResponse?: string;\n    paidDate?: string;\n}\n\nexport function getSkPaymentStatusText(status: SkPaymentStatus) {\n    switch (status) {\n        case SkPaymentStatus.Transfer:\n            return '무통장입금';\n        case SkPaymentStatus.Card:\n            return '카드결제 (일반 무이자)';\n        case SkPaymentStatus.Card2:\n            return '카드결제 (분담 무이자)';\n        case SkPaymentStatus.Kakao:\n            return '카카오페이';\n        case SkPaymentStatus.Toss:\n            return '토스페이';\n        case SkPaymentStatus.Payco:\n            return 'PAYCO';\n        case SkPaymentStatus.Naver:\n        case SkPaymentStatus.NaverPG:\n            return '네이버페이';\n        default:\n            return status;\n    }\n}\n","import { SkProductListItem } from \"./product\";\n\nexport enum SkShippingStatus {\n    Prepare = 'PREPARE',                // 배송 준비중\n    Progress = 'PROGRESS',              // 배송중\n    Done = 'DONE',                      // 배송 완료\n    Fail = 'FAIL'                       // 배송 실패\n}\n\nexport enum SkShippingMethod {\n    Normal = 'NORMAL',\n    Normal2 = 'NORMAL2',\n    Quick = 'QUICK',\n    Visit = 'VISIT',\n    Software = 'SOFTWARE',\n    SoftwareRealtime = 'SOFTWARE_REALTIME',\n    Howser = 'HOWSER',\n    Howser2 = 'HOWSER2'\n}\n\nexport interface ISkShippingInfo {\n    id?: number;\n    memo?: string;\n    method?: SkShippingMethod;\n    status?: SkShippingStatus;\n    orderItemId?: number;\n    productInfo?: SkProductListItem;\n    amount?: number;\n    shippingCompanyName?: string;\n    shippingCompanyCode?: string;\n    trackingCode?: string;\n    edeliveryInfo?: string;\n}\n\nexport interface ISkShipping {\n    id?: number;\n    receiverName?: string;\n    email?: string;\n    phone?: string;\n    phone2?: string;\n    zipCode?: string;\n    address?: string;\n    address2?: string;\n    infoList?: ISkShippingInfo[];\n    hardwareShipping?: boolean;\n    softwareShipping?: boolean;\n}\n\nexport function getSkShippingMethodText(method: SkShippingMethod) {\n    switch (method) {\n        case SkShippingMethod.Normal:\n            return '택배 배송';\n        case SkShippingMethod.Normal2:\n            return '착불 배송';\n        case SkShippingMethod.Quick:\n            return '퀵 배송 (착불)';\n        case SkShippingMethod.Visit:\n            return '방문 수령';\n        case SkShippingMethod.Software:\n            return '전자배송(수동)';\n        case SkShippingMethod.SoftwareRealtime:\n            return '전자배송(실시간)';\n        case SkShippingMethod.Howser:\n            return '가구 전문 배송(착불)'\n    }\n}\n","export enum SkNicePayCreditCards {\n    BC = '01',          // 비씨\n    KB = '02',          // KB 국민\n    KEB = '03',         // 외환\n    Samsung = '04',     // 삼성\n    Shinhan = '06',     // 신한\n    Hyundae = '07',     // 현대\n    Lotte = '08',       // 롯데\n    Hanmi = '09',       // 한미\n    SHanmi = '10',      // 신세계한미\n    City = '11',        // 시티\n    NH = '12',          // 농협\n    SuHyup = '13',      // 수협\n    PyungHwa = '14',    // 평화\n    Woori = '15',       // 우리\n    HanaSK = '16',      // 하나 SK\n    DongName = '17',    // 동남(주택)\n    JuTaek = '18',      // 주택\n    ChoHeung = '19',    // 조흥(강원)\n    ChuckHyup = '20',   // 축협(농협)\n    Gwangju = '21',     // 광주\n    Jeonbuk = '22',     // 전북\n    Jeju = '23',        // 제주\n    KDBC = '24',        // 산은캐피탈\n    VISA = '25',        // 해외비자\n    MASTER = '26',      // 해외마스터\n    Diners = '27',      // 해외다이너스\n    AMX = '28',         // 해외 AMX\n    JCB = '29',         // 해외 JCB\n    SKOKCashbag = '31', // SK-OKCashBag\n    ePost = '32',       // 우체국\n    FSB = '33',         // 저축은행\n    UnionPay = '34',    // 은련\n    KFCC = '35',        // 새마을금고\n    KDB = '36',         // KDB 산업\n    Kakao = '37',       // 카카오뱅크\n    KBank = '38'        // 케이뱅크\n}\n\nexport function getNicePayCreditCardTitle(value: SkNicePayCreditCards) {\n    switch (value) {\n        case SkNicePayCreditCards.BC:           return '비씨카드';\n        case SkNicePayCreditCards.KB:           return 'KB국민카드';\n        case SkNicePayCreditCards.KEB:          return '외환카드';\n        case SkNicePayCreditCards.Samsung:      return '삼성카드';\n        case SkNicePayCreditCards.Shinhan:      return '신한카드';\n        case SkNicePayCreditCards.Hyundae:      return '현대카드';\n        case SkNicePayCreditCards.Lotte:        return '롯데카드';\n        case SkNicePayCreditCards.Hanmi:        return '한미카드';\n        case SkNicePayCreditCards.SHanmi:       return '신세계한미카드';\n        case SkNicePayCreditCards.City:         return '시티카드';\n        case SkNicePayCreditCards.NH:           return '농협카드';\n        case SkNicePayCreditCards.SuHyup:       return '수협카드';\n        case SkNicePayCreditCards.PyungHwa:     return '평화카드';\n        case SkNicePayCreditCards.Woori:        return '우리카드';\n        case SkNicePayCreditCards.HanaSK:       return '하나SK카드';\n        case SkNicePayCreditCards.DongName:     return '동남(주택)카드';\n        case SkNicePayCreditCards.JuTaek:       return '주택카드';\n        case SkNicePayCreditCards.ChoHeung:     return '조흥(강원)카드';\n        case SkNicePayCreditCards.ChuckHyup:    return '축협(농협)카드';\n        case SkNicePayCreditCards.Gwangju:      return '광주카드';\n        case SkNicePayCreditCards.Jeonbuk:      return '전북카드';\n        case SkNicePayCreditCards.Jeju:         return '제주카드';\n        case SkNicePayCreditCards.KDBC:         return '산은캐피탈카드';\n        case SkNicePayCreditCards.VISA:         return '해외비자카드';\n        case SkNicePayCreditCards.MASTER:       return '해외마스터카드';\n        case SkNicePayCreditCards.Diners:       return '해외다이너스카드';\n        case SkNicePayCreditCards.AMX:          return '해외AMX카드';\n        case SkNicePayCreditCards.JCB:          return '해외JCB카드';\n        case SkNicePayCreditCards.SKOKCashbag:  return 'SK-OKCashBag카드';\n        case SkNicePayCreditCards.ePost:        return '우체국카드';\n        case SkNicePayCreditCards.FSB:          return '저축은행카드';\n        case SkNicePayCreditCards.UnionPay:     return '은련카드';\n        case SkNicePayCreditCards.KFCC:         return '새마을금고카드';\n        case SkNicePayCreditCards.KDB:          return 'KDB산업카드';\n        case SkNicePayCreditCards.Kakao:        return '카카오뱅크카드';\n        case SkNicePayCreditCards.KBank:        return '케이뱅크카드';\n        default:                                return `알수없음 (code: ${value})`;\n    }\n}\n","export enum SkTossPayCreditCards {\n    BC = '31',          // 비씨\n    KB = '11',          // KB 국민\n    Samsung = '51',     // 삼성\n    Shinhan = '41',     // 신한\n    Hyundae = '61',     // 현대\n    Lotte = '71',       // 롯데\n    City = '36',        // 시티\n    NH = '91',          // 농협\n    SuHyup = '34',      // 수협\n    Woori = '33',       // 우리\n    HanaSK = '21',      // 하나 SK\n    DongName = '17',    // 동남(주택)\n    Gwangju = '46',     // 광주\n    Jeonbuk = '35',     // 전북\n    Jeju = '42',        // 제주\n    VISA = '4V',        // 해외비자\n    MASTER = '4M',      // 해외마스터\n    Diners = '6D',      // 해외다이너스\n    AMX = '7A',         // 해외 AMX\n    JCB = '4J',         // 해외 JCB\n    ePost = '37',       // 우체국\n    UnionPay = '3C',    // 은련\n    KFCC = '38',        // 새마을금고\n    KDB = '30',         // KDB 산업\n    Kakao = '15',       // 카카오뱅크\n    KBank = '3A'        // 케이뱅크\n}\n\nexport function getTossPayCreditCardTitle(value: SkTossPayCreditCards) {\n    switch (value) {\n        case SkTossPayCreditCards.BC:           return '비씨카드';\n        case SkTossPayCreditCards.KB:           return 'KB국민카드';\n        case SkTossPayCreditCards.Samsung:      return '삼성카드';\n        case SkTossPayCreditCards.Shinhan:      return '신한카드';\n        case SkTossPayCreditCards.Hyundae:      return '현대카드';\n        case SkTossPayCreditCards.Lotte:        return '롯데카드';\n        case SkTossPayCreditCards.City:         return '시티카드';\n        case SkTossPayCreditCards.NH:           return '농협카드';\n        case SkTossPayCreditCards.SuHyup:       return '수협카드';\n        case SkTossPayCreditCards.Woori:        return '우리카드';\n        case SkTossPayCreditCards.HanaSK:       return '하나SK카드';\n        case SkTossPayCreditCards.DongName:     return '동남(주택)카드';\n        case SkTossPayCreditCards.Gwangju:      return '광주카드';\n        case SkTossPayCreditCards.Jeonbuk:      return '전북카드';\n        case SkTossPayCreditCards.Jeju:         return '제주카드';\n        case SkTossPayCreditCards.VISA:         return '해외비자카드';\n        case SkTossPayCreditCards.MASTER:       return '해외마스터카드';\n        case SkTossPayCreditCards.Diners:       return '해외다이너스카드';\n        case SkTossPayCreditCards.AMX:          return '해외AMX카드';\n        case SkTossPayCreditCards.JCB:          return '해외JCB카드';\n        case SkTossPayCreditCards.ePost:        return '우체국카드';\n        case SkTossPayCreditCards.UnionPay:     return '은련카드';\n        case SkTossPayCreditCards.KFCC:         return '새마을금고카드';\n        case SkTossPayCreditCards.KDB:          return 'KDB산업카드';\n        case SkTossPayCreditCards.Kakao:        return '카카오뱅크카드';\n        case SkTossPayCreditCards.KBank:        return '케이뱅크카드';\n        default:                                return `알수없음 (code: ${value})`;\n    }\n}\n","import {ISkFile} from \"./file\";\nimport {Audit, IAudit} from \"./audit\";\n\nexport enum SkPointType {\n    Add = 'ADD',\n    Subtract = 'SUBTRACT'\n}\n\nexport interface ISkPoint extends IAudit{\n    id?: number;\n    type?: SkPointType;\n    amount?: number;\n    used?: boolean;\n    cause?: string;\n    expiredDate?: string;\n}\n\nexport class SkPoint extends Audit {\n    id: number;\n    type: SkPointType;\n    amount: number;\n    used: boolean;\n    cause: string;\n    expiredDate: string;\n\n    constructor(data: ISkFile = {}) {\n        super(data);\n        Object.assign(this, data);\n    }\n\n    causeText(): string {\n        let text = '';\n        if (this.cause === 'ADMIN') {\n            text = '어드민에 의해';\n\n            if (this.type === SkPointType.Add) {\n                text = text + ' 추가됨';\n            } else if (this.type === SkPointType.Subtract) {\n                text = text + ' 차감됨';\n            }\n        } else if (this.cause.startsWith('ORDER-')) {\n            text = '주문(' + this.cause.replace('ORDER-', '') + ') 에 의해';\n\n            if (this.type === SkPointType.Add) {\n                text = text + ' 적립됨';\n            } else if (this.type === SkPointType.Subtract) {\n                text = text + ' 사용됨';\n            }\n        } else if (this.cause.startsWith('CANCEL-')) {\n            text = '주문(' + this.cause.replace('CANCEL-', '') + ') 취소에 의해';\n\n            if (this.type === SkPointType.Add) {\n                text = text + ' 추가됨';\n            } else if (this.type === SkPointType.Subtract) {\n                text = text + ' 차감됨';\n            }\n        } else {\n            text = this.cause;\n        }\n\n        return text;\n    }\n}\n\nexport interface ISkPointAdd {\n    type?: SkPointType;\n    amount?: number;\n    userId?: number;\n    cause?: string;\n}\n\n","import { IAudit } from './audit';\nimport { ISkIdTitleValue, SkBrand, SkCategory, SkSubCategoryItem, SkValueType } from './etc';\nimport { ISkOrderList } from './order';\nimport { SkProductListItem } from './product';\nimport { ISkUser } from './user';\n\nexport enum SkCouponType {\n    Code = 'CODE',\n    Inject = 'INJECT'\n}\n\nexport enum SkCouponTarget {\n    All = 'ALL',\n    Brand = 'BRAND',\n    Category = 'CATEGORY',\n    SubCategory = 'SUBCATEGORY',\n    Product = 'PRODUCT'\n}\n\nexport enum SkCouponTrigger {\n    None = 'NONE',\n    All = 'ALL',\n    Brand = 'BRAND',\n    Category = 'CATEGORY',\n    SubCategory = 'SUBCATEGORY',\n    Product = 'PRODUCT'\n}\n\nexport interface ISkCouponCount {\n    total?: number;\n    trash?: number;\n}\n\nexport interface ISkCouponListItem extends IAudit {\n    id?: number;\n    title?: string;\n    type?: SkCouponType;\n    startDate?: string;\n    endDate?: string;\n    forever?: boolean;\n    singleCode?: string;\n    activated?: boolean;\n}\n\nexport interface ISkCouponDetail extends ISkCouponListItem {\n    usableWithOthers?: boolean;           // 다른 쿠폰과 함께 사용 가능한지 여부\n    duplicatable?: boolean;           // 중복으로 사용 가능한지 여부\n    anonymous?: boolean;              // 비로그인 유저도 사용 가능 여부\n    total?: number;\n    used?: number;\n    couponTarget?: SkCouponTarget;\n    couponTargetBrands?: SkBrand[];\n    couponTargetCategories?: SkCategory[];\n    couponTargetSubCategories?: SkSubCategoryItem[];\n    couponTargetProducts?: SkProductListItem[];\n    couponTrigger?: SkCouponTrigger;\n    couponTriggerAmount?: number;\n    couponTriggerBrands?: SkBrand[];\n    couponTriggerCategories?: SkCategory[];\n    couponTriggerSubCategories?: SkSubCategoryItem[];\n    couponTriggerProducts?: SkProductListItem[];\n    discountAmount?: number;\n    discountType?: SkValueType;\n    minUsablePrice?: number;\n}\n\nexport interface ISkCouponTicket {\n    id?: number;\n    code?: string;\n    coupon?: ISkCouponDetail;\n    order?: ISkOrderList;\n    user?: ISkUser;\n}\n\nexport interface ISkCouponTriggerUpdate {\n    couponTrigger?: SkCouponTrigger;\n    couponTriggerAmount?: number;\n    couponTriggerBrandIds?: number[];\n    couponTriggerCategoryIds?: number[];\n    couponTriggerSubCategoryIds?: number[];\n    couponTriggerProductIds?: number[];\n}\n\nexport interface ISkUserCouponInfo {\n    id?: number;\n    title?: string;\n    code?: string;\n\n    startDate?: string;\n    endDate?: string;\n    forever?: boolean;\n\n    activated?: boolean;\n    usableWithOthers?: boolean;\n\n    couponTarget?: SkCouponTarget;\n    couponTargetBrands?: ISkIdTitleValue[];\n    couponTargetCategories?: ISkIdTitleValue[];\n    couponTargetSubCategories?: ISkIdTitleValue[];\n    couponTargetProducts?: ISkIdTitleValue[];\n\n    discountAmount?: number;\n    discountType?: SkValueType;\n    minUsablePrice?: number;\n\n    orderId?: string;\n    paidDate?: string;\n}\n\nexport interface ISkUserCouponInfo {\n    id?: number;\n    title?: string;\n    code?: string;\n\n    startDate?: string;\n    endDate?: string;\n    forever?: boolean;\n\n    activated?: boolean;\n    usableWithOthers?: boolean;\n\n    couponTarget?: SkCouponTarget;\n    couponTargetBrands?: ISkIdTitleValue[];\n    couponTargetCategories?: ISkIdTitleValue[];\n    couponTargetSubCategories?: ISkIdTitleValue[];\n    couponTargetProducts?: ISkIdTitleValue[];\n\n    discountAmount?: number;\n    discountType?: SkValueType;\n    minUsablePrice?: number;\n\n    orderId?: string;\n    paidDate?: string;\n}\n","import {Audit, IAudit} from \"./audit\";\nimport {ISkDocumentPublicList} from \"./document\";\nimport {ISkUser, SkUser} from \"./user\";\n\nexport interface IComment extends IAudit {\n    id?: number;\n    author?: ISkUser;\n    content?: string;\n    secret?: boolean;\n}\n\nexport class SkComment extends Audit {\n    id: number;\n    author: SkUser;\n    content: string;\n    secret: boolean;\n\n    constructor(data: IComment = {}) {\n        super(data);\n\n        this.id = data.id || null;\n        this.author = new SkUser(data.author);\n        this.content = data.content || '';\n        this.secret = data.secret || false;\n    }\n}\n\n\n/**\n * 문서용 댓글 데이터 정의\n */\n\nexport interface ISkDocumentCommentUpdate {\n    content?: string;\n    secret?: boolean;\n}\n\nexport interface ISkDocumentCommentWrite extends ISkDocumentCommentUpdate{\n    documentId?: number;\n    parentId?: number;\n}\n\nexport interface ISkDocumentCommentParent extends IComment {\n    document?: ISkDocumentPublicList;\n\n    childrens: ISkDocumentCommentChild[];\n    childrenCount: number;\n}\n\nexport interface ISkDocumentCommentChild extends IComment {\n}\n\n\n\nexport class SkDocumentCommentParent extends SkComment {\n    document: ISkDocumentPublicList;\n    childrens: SkDocumentCommentChild[];\n    childrenCount: number;\n\n    constructor(data: ISkDocumentCommentParent) {\n        super(data);\n\n        this.document = data.document;\n        this.childrens = (data.childrens || []).map(item => new SkDocumentCommentChild(item));\n        this.childrenCount = data.childrenCount || 0;\n    }\n}\n\nexport class SkDocumentCommentChild extends SkComment {\n    constructor(data: ISkDocumentCommentChild) {\n        super(data);\n    }\n}\n\n","import {ISkUser} from \"./user\";\nimport {ISkFile} from \"./file\";\nimport {ISkProductDetail} from \"./product\";\nimport {ISkOrderDetail} from \"./order\";\nimport {IAudit} from \"./audit\";\n\nexport enum SkContactStatus {\n    Open = 'OPEN',\n    Close = 'CLOSE'\n}\n\nexport enum SkContactType {\n    Normal = 'NORMAL',             // 1:1 문의\n    BeforeBuy = 'BEFOREBUY',          // 구매전 상담\n    Technical = 'TECHNICAL',          // 기술지원\n    Software = 'SOFTWARE',           // 전자배송상품 문의\n    AS = 'AS',                 // AS 문의\n}\n\nexport function getSkContactTypeText(type: SkContactType) {\n    switch (type) {\n        case SkContactType.Normal:\n            return '1:1 문의';\n        case SkContactType.BeforeBuy:\n            return '구매전 상담';\n        case SkContactType.Technical:\n            return '기술지원';\n        case SkContactType.Software:\n            return '전자배송상품';\n        case SkContactType.AS:\n            return 'AS 문의';\n    }\n}\n\nexport interface ISkContact extends IAudit {\n    id?: number;\n    status?: SkContactStatus;\n    type?: SkContactType;\n\n    user?: ISkUser;\n    userName?: string;\n    email?: string;\n    phone?: string;\n    title?: string;\n    content?: string;\n    attachment?: ISkFile;\n    product?: ISkProductDetail;\n    order?: ISkOrderDetail;\n    seller?: string;\n    serialNumber?: string;\n    buyDate?: string;\n    answers?: ISkContactAnswer[]\n}\n\nexport interface ISkContactAnswer extends IAudit {\n    id?: number;\n    user?: ISkUser;\n    content?: string;\n}\n","export enum SkGridItemType {\n    Icon = 'Icon',\n    Image = 'Image',\n    SlidePromotion = 'SlidePromotion',\n    SlideShop = 'SlideShop',\n    SlideEditorial = 'SlideEditorial',\n    SlideStudio = 'SlideStudio',\n    SlideCustom = 'SlideCustom'\n}\n\nexport interface ISkGridItemIconData {\n    iconType?: 'material' | 'custom';\n    icon?: string\n    title?: string;\n    url?: string;\n}\n\nexport class SkGridItemIconData {\n    iconType: 'material' | 'custom';\n    icon: string;\n    title: string;\n    url: string;\n\n    constructor(data: ISkGridItemIconData = {}) {\n        this.iconType = data.iconType || 'material';\n        this.icon = data.icon || 'error_outline';\n        this.url = data.url || '';\n        this.title = data.title || '';\n    }\n}\n\nexport interface ISkGridItemImageData {\n    src?: string | number;\n    title?: string;\n    url?: string;\n}\n\nexport class SkGridItemImageData {\n    src: string | number;\n    title: string;\n    url: string;\n\n    constructor(data: ISkGridItemImageData = {}) {\n        this.src = data.src || '';\n        this.title = data.title || '';\n        this.url = data.url;\n    }\n}\n\nexport interface ISkGridItemSlideDataCustomFormat {\n    imageId?: number;\n    type?: string;\n    title?: string;\n    desc?: string;\n    link?: string;\n}\n\nexport interface ISkGridItemSlideData {\n    target?: 'featured' | 'latest' | string;\n    count?: number;\n    list?: any[] | number[] | ISkGridItemSlideDataCustomFormat[];\n    lastImageId?: number;\n}\n\nexport class SkGridItemSlideData {\n    target: 'featured' | 'latest' | string;\n    count: number;\n    list: any[] | number[] | ISkGridItemSlideDataCustomFormat[];\n    lastImageId?: number;\n\n    constructor(data: ISkGridItemSlideData = {}) {\n        this.target = data.target || 'latest';\n        this.count = data.count || 5;\n        this.list = data.list || [];\n        this.lastImageId = data.lastImageId;\n    }\n}\n\nexport interface ISkGridItem {\n    rowspan?: number;\n    colspan?: number;\n    type?: SkGridItemType\n    value?: ISkGridItemSlideData | ISkGridItemIconData | ISkGridItemImageData;\n    url?: string;\n}\n\nexport class SkGridItem {\n    rowspan: number;\n    colspan: number;\n    type: SkGridItemType;\n    value: SkGridItemSlideData | SkGridItemIconData | SkGridItemImageData;\n\n    constructor(data: ISkGridItem = {}) {\n        this.rowspan = data.rowspan || 1;\n        this.colspan = data.colspan || 1;\n\n        this.type = data.type || SkGridItemType.SlideEditorial;\n\n        switch (this.type) {\n            case SkGridItemType.Icon:\n                this.value = new SkGridItemIconData(<ISkGridItemIconData> data.value);\n                break;\n            case SkGridItemType.Image:\n                this.value = new SkGridItemImageData(<ISkGridItemImageData> data.value);\n                break;\n            case SkGridItemType.SlidePromotion:\n            case SkGridItemType.SlideShop:\n            case SkGridItemType.SlideEditorial:\n            case SkGridItemType.SlideStudio:\n            case SkGridItemType.SlideCustom:\n                this.value = new SkGridItemSlideData(<ISkGridItemSlideData> data.value);\n        }\n    }\n}\n\nexport interface ISkGridData {\n    cols?: number;\n    gutterSize?: number;\n    aspect?: string;\n    items?: ISkGridItem[];\n}\n\nexport class SkGridData {\n    cols: number;\n    gutterSize: number;\n    aspect: string;\n    items: SkGridItem[];\n\n    constructor(data: ISkGridData = {}) {\n        this.cols = data.cols || 4;\n        this.gutterSize = data.gutterSize || 0;\n        this.aspect = data.aspect || '1:1';\n        this.items = (data.items || []).map(item => new SkGridItem(item));\n    }\n\n    setItems(items: ISkGridItem[]) {\n        this.items = (items || []).map(item => new SkGridItem(item));\n    }\n\n    setItem(item: ISkGridItem) {\n        this.items.push(new SkGridItem(item))\n    }\n\n    updateItem(index: number, item: ISkGridItem) {\n        this.items[index] = new SkGridItem(item);\n    }\n\n    removeItem(index: number) {\n        this.items.splice(index, 1);\n    }\n}\n\nexport interface ISkMobileMainData {\n    editorials?: SkGridItemSlideData;\n    studios?: SkGridItemSlideData;\n    promotions?: SkGridItemSlideData;\n    products?: SkGridItemSlideData;\n}\n\nexport class SkMobileMainData {\n    editorials: SkGridItemSlideData;\n    studios: SkGridItemSlideData;\n    promotions: SkGridItemSlideData;\n    products: SkGridItemSlideData;\n\n    constructor(data: ISkMobileMainData = {}) {\n        this.editorials = new SkGridItemSlideData(data.editorials);\n        this.studios = new SkGridItemSlideData(data.studios);\n        this.promotions = new SkGridItemSlideData(data.promotions);\n        this.products = new SkGridItemSlideData(data.products);\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}