import { ApiOptions, EngineClient } from '../core/engine-client';
import { ReferenceCategory } from '../reference/models/reference-category';
import { SegmentType, SegmentTypeCode } from './models/segment-type';
import { PaginationQuery } from '../common/pagination-query';
import { PaginatedItems } from '../common/paginated-items';
import { Segment } from './models/segment';
import { CreateSegmentDefinitionRequest } from './models/create-segment-definition-request';
import { SegmentDefinition } from './models/segment-definition';
import { PatchSegmentDefinitionRequest } from './models/patch-segment-definition-request';
import { AccessPolicyGroup } from './models/access-policy-group';
import { SegmentCategory } from './models/segment-category';
export declare class SegmentApi {
    private readonly client;
    constructor(client: EngineClient);
    /**
     * It returns a list of segments based on segment definition ID, category, reference name, and type. If no parameters are provided, it returns all segments.<br/>This endpoint performs server-level operations. The token does not need to be associated with any account or character.<br/><b>Account Policies</b>: account_policy:read:segment<br/><br/> This endpoint requires authorization, and supports following token types:<br/>🔓 [API Key] <b>Required Scopes</b>: read:segment<br/>🔓 [SSO Token]<br/>🔓 [Access Token]<br/>🔓 [Session Token]
     * @summary Get segments
     * @param {Object} [query] Query parameters
     * @param {ReferenceCategory} [query.category] Filter by reference category.
     * @param {string} [query.referenceName] Filter by references name.
     * @param {boolean} [query.segmentDefinitionId] Filter by segment definition id.
     * @param {number} [query.pageIndex] Page index for pagination.
     * @param {number} [query.pageSize] Page size for pagination.
     * @param {*} [options] Override http request option.
     * @throws {EngineError}
     */
    getSegments(query?: {
        category?: ReferenceCategory;
        referenceName?: string;
        segmentDefinitionId?: string;
        type?: SegmentTypeCode;
    } & PaginationQuery, options?: ApiOptions): Promise<PaginatedItems<Segment>>;
    /**
     * It creates a new segment definition. The segment definition can be used to define segments that can be used in the game server.<br/>This endpoint performs server-level operations. The token does not need to be associated with any account or character.<br/><b>Account Policies</b>: account_policy:write:segment_definition<br/><br/> This endpoint requires authorization, and supports following token types:<br/>🔓 [API Key] <b>Required Scopes</b>: write:segment_definition<br/>🔓 [SSO Token]<br/>🔓 [Access Token]<br/>🔓 [Session Token]
     * @summary Create segment definition
     * @param {CreateSegmentDefinitionRequest} request
     * @param {*} [options] Override http request option.
     * @throws {EngineError}
     */
    createSegmentDefinition(request: CreateSegmentDefinitionRequest, options?: ApiOptions): Promise<SegmentDefinition>;
    /**
     * It returns the definitions of segments based on type and category. If no type or category is provided, it returns all segment definitions.<br/>This endpoint performs server-level operations. The token does not need to be associated with any account or character.<br/><b>Account Policies</b>: account_policy:read:segment_definition<br/><br/> This endpoint requires authorization, and supports following token types:<br/>🔓 [API Key] <b>Required Scopes</b>: read:segment_definition<br/>🔓 [SSO Token]<br/>🔓 [Access Token]<br/>🔓 [Session Token]
     * @summary Get segment definitions
     * @param {Object} [query] Query parameters
     * @param {ReferenceCategory} [query.category]  Filter definitions by reference category.
     * @param {SegmentTypeCode} [query.type]       Filter definitions by segment type code.
     * @param {boolean} [query.noCache]            If `true`, bypass server cache and fetch fresh data.
     * @param {*} [options] Override http request option.
     * @throws {EngineError}
     */
    getSegmentDefinitions(query?: {
        category?: ReferenceCategory;
        type?: SegmentTypeCode;
        noCache?: boolean;
    }, options?: ApiOptions): Promise<SegmentDefinition[]>;
    /**
     * It returns a segment definition by its ID. If no cache is specified, it will return the cached version if available.<br/>This endpoint performs server-level operations. The token does not need to be associated with any account or character.<br/><b>Account Policies</b>: account_policy:read:segment_definition<br/><br/> This endpoint requires authorization, and supports following token types:<br/>🔓 [API Key] <b>Required Scopes</b>: read:segment_definition<br/>🔓 [SSO Token]<br/>🔓 [Access Token]<br/>🔓 [Session Token]
     * @summary Get segment definition by ID
     * @param {string} segmentDefinitionId
     * @param {Object} [query] Query parameters
     * @param {boolean} [query.noCache]            If `true`, bypass server cache and fetch fresh data.
     * @param {*} [options] Override http request option.
     * @throws {EngineError}
     */
    getSegmentDefinitionById(segmentDefinitionId: string, query?: {
        noCache?: boolean;
    }, options?: ApiOptions): Promise<SegmentDefinition>;
    /**
     * It patches a segment definition by its ID. It allows updating the segment definition with new data.<br/>This endpoint performs server-level operations. The token does not need to be associated with any account or character.<br/><b>Account Policies</b>: account_policy:write:segment_definition<br/><br/> This endpoint requires authorization, and supports following token types:<br/>🔓 [API Key] <b>Required Scopes</b>: write:segment_definition<br/>🔓 [SSO Token]<br/>🔓 [Access Token]<br/>🔓 [Session Token]
     * @summary Patch segment definition by ID
     * @param {string} segmentDefinitionId
     * @param {PatchSegmentDefinitionRequest} request
     * @param {*} [options] Override http request option.
     * @throws {EngineError}
     */
    patchSegmentDefinitionById(segmentDefinitionId: string, request: PatchSegmentDefinitionRequest, options?: ApiOptions): Promise<SegmentDefinition>;
    /**
     * It removes a segment definition by its ID. This operation is irreversible and will delete the segment definition permanently.<br/>This endpoint performs server-level operations. The token does not need to be associated with any account or character.<br/><b>Account Policies</b>: account_policy:write:segment_definition<br/><br/> This endpoint requires authorization, and supports following token types:<br/>🔓 [API Key] <b>Required Scopes</b>: write:segment_definition<br/>🔓 [SSO Token]<br/>🔓 [Access Token]<br/>🔓 [Session Token]
     * @summary Remove segment definition by ID
     * @param {string} segmentDefinitionId
     * @param {*} [options] Override http request option.
     * @throws {EngineError}
     */
    removeSegmentDefinitionById(segmentDefinitionId: string, options?: ApiOptions): Promise<void>;
    /**
     * It returns a list of access policies that can be used to control access to resources. If category is not specified, it returns ACCOUNT access policies.<br/>This endpoint performs server-level operations. The token does not need to be associated with any account or character.<br/><br/> This endpoint requires authorization, and supports following token types:<br/>🔓 [API Key]<br/>🔓 [SSO Token]<br/>🔓 [Access Token]<br/>🔓 [Session Token]
     * @summary Get access policies
     * @param {ReferenceCategory} [category]
     * @param {*} [options] Override http request option.
     * @throws {EngineError}
     */
    getAccessPolicies(category: ReferenceCategory, options?: ApiOptions): Promise<AccessPolicyGroup[]>;
    /**
     * It returns a list of segment categories that can be used to categorize segments.<br/>This endpoint performs server-level operations. The token does not need to be associated with any account or character.<br/><br/> This endpoint requires authorization, and supports following token types:<br/>🔓 [API Key]<br/>🔓 [SSO Token]<br/>🔓 [Access Token]<br/>🔓 [Session Token]
     * @summary Get segment categories
     * @param {*} [options] Override http request option.
     * @throws {EngineError}
     */
    getSegmentCategories(options?: ApiOptions): Promise<SegmentCategory[]>;
    /**
     * It returns a list of segment types that can be used to categorize segments by their type.<br/>This endpoint performs server-level operations. The token does not need to be associated with any account or character.<br/><br/> This endpoint requires authorization, and supports following token types:<br/>🔓 [API Key]<br/>🔓 [SSO Token]<br/>🔓 [Access Token]<br/>🔓 [Session Token]
     * @summary Get segment types
     * @param {*} [options] Override http request option.
     * @throws {EngineError}
     */
    getSegmentTypes(options?: ApiOptions): Promise<SegmentType[]>;
}
