meteora-api 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["BASE_PATH","Configuration","querystring","DefaultConfig","BaseAPI","ResponseError","isFormData","isBlob","FetchError","RequiredError","COLLECTION_FORMATS","exists","querystringSingleKey","mapValues","canConsumeForm","JSONApiResponse","VoidApiResponse","BlobApiResponse","TextApiResponse","instanceOfPoolResponse","PoolResponseFromJSON","PoolResponseFromJSONTyped","exists","PoolResponseToJSON","PoolResponseFromJSON","PoolResponseToJSON","runtime.BaseAPI","runtime.JSONApiResponse","runtime.BaseAPI","runtime.RequiredError","runtime.JSONApiResponse","PoolsApi","runtime.BaseAPI","runtime.RequiredError","runtime.JSONApiResponse","PoolResponseFromJSON","Configuration","PoolsApi","BASE_PATH","Configuration","querystring","DefaultConfig","BaseAPI","ResponseError","isFormData","isBlob","FetchError","RequiredError","COLLECTION_FORMATS","exists","querystringSingleKey","mapValues","canConsumeForm","JSONApiResponse","VoidApiResponse","BlobApiResponse","TextApiResponse","instanceOfAmountTotals","AmountTotalsFromJSON","AmountTotalsFromJSONTyped","AmountTotalsToJSON","instanceOfCurrentPosition","CurrentPositionFromJSON","CurrentPositionFromJSONTyped","AmountTotalsFromJSON","CurrentPositionToJSON","AmountTotalsToJSON","exists","exists","CurrentPositionFromJSON","AmountTotalsFromJSON","CurrentPositionToJSON","AmountTotalsToJSON","exists","instanceOfErrorResponse","ErrorResponseFromJSON","ErrorResponseFromJSONTyped","ErrorResponseToJSON","instanceOfGetGroupDetailsParams","GetGroupDetailsParamsFromJSON","GetGroupDetailsParamsFromJSONTyped","GetGroupDetailsParamsToJSON","instanceOfGetGroupsQuery","GetGroupsQueryFromJSON","GetGroupsQueryFromJSONTyped","exists","GetGroupsQueryToJSON","instanceOfGetPoolParams","GetPoolParamsFromJSON","GetPoolParamsFromJSONTyped","GetPoolParamsToJSON","instanceOfPoolConfig","PoolConfigFromJSON","PoolConfigFromJSONTyped","PoolConfigToJSON","instanceOfTimeWindowData","TimeWindowDataFromJSON","TimeWindowDataFromJSONTyped","TimeWindowDataToJSON","instanceOfTokenMetrics","TokenMetricsFromJSON","TokenMetricsFromJSONTyped","TokenMetricsToJSON","instanceOfGetPools200ResponseDataInner","GetPools200ResponseDataInnerFromJSON","GetPools200ResponseDataInnerFromJSONTyped","TimeWindowDataFromJSON","exists","PoolConfigFromJSON","TokenMetricsFromJSON","GetPools200ResponseDataInnerToJSON","TimeWindowDataToJSON","PoolConfigToJSON","TokenMetricsToJSON","instanceOfGetPools200Response","GetPools200ResponseFromJSON","GetPools200ResponseFromJSONTyped","GetPools200ResponseDataInnerFromJSON","GetPools200ResponseToJSON","GetPools200ResponseDataInnerToJSON","instanceOfGetPoolsQuery","GetPoolsQueryFromJSON","GetPoolsQueryFromJSONTyped","exists","GetPoolsQueryToJSON","instanceOfGroupResponse","GroupResponseFromJSON","GroupResponseFromJSONTyped","GroupResponseToJSON","instanceOfOHLCVResponse","OHLCVResponseFromJSON","OHLCVResponseFromJSONTyped","OHLCVResponseToJSON","instanceOfPaginationResponseGroupResponseDataInner","PaginationResponseGroupResponseDataInnerFromJSON","PaginationResponseGroupResponseDataInnerFromJSONTyped","PaginationResponseGroupResponseDataInnerToJSON","instanceOfPaginationResponseGroupResponse","PaginationResponseGroupResponseFromJSON","PaginationResponseGroupResponseFromJSONTyped","PaginationResponseGroupResponseDataInnerFromJSON","PaginationResponseGroupResponseToJSON","PaginationResponseGroupResponseDataInnerToJSON","instanceOfPaginationResponsePoolResponse","PaginationResponsePoolResponseFromJSON","PaginationResponsePoolResponseFromJSONTyped","GetPools200ResponseDataInnerFromJSON","PaginationResponsePoolResponseToJSON","GetPools200ResponseDataInnerToJSON","instanceOfPoolResponse","PoolResponseFromJSON","PoolResponseFromJSONTyped","TimeWindowDataFromJSON","exists","PoolConfigFromJSON","TokenMetricsFromJSON","PoolResponseToJSON","TimeWindowDataToJSON","PoolConfigToJSON","TokenMetricsToJSON","PoolsSortBy","PoolsSortByFromJSON","PoolsSortByFromJSONTyped","PoolsSortByToJSON","PositionStatus","PositionStatusFromJSON","PositionStatusFromJSONTyped","PositionStatusToJSON","exists","CurrentPositionFromJSON","AmountTotalsFromJSON","CurrentPositionToJSON","AmountTotalsToJSON","instanceOfProtocolMetricsResponse","ProtocolMetricsResponseFromJSON","ProtocolMetricsResponseFromJSONTyped","ProtocolMetricsResponseToJSON","SortDirection","SortDirectionFromJSON","SortDirectionFromJSONTyped","SortDirectionToJSON","TimeFrame","TimeFrameFromJSON","TimeFrameFromJSONTyped","TimeFrameToJSON","instanceOfTimeseriesResponseOHLCVResponseDataInner","TimeseriesResponseOHLCVResponseDataInnerFromJSON","TimeseriesResponseOHLCVResponseDataInnerFromJSONTyped","TimeseriesResponseOHLCVResponseDataInnerToJSON","instanceOfTimeseriesResponseOHLCVResponse","TimeseriesResponseOHLCVResponseFromJSON","TimeseriesResponseOHLCVResponseFromJSONTyped","TimeseriesResponseOHLCVResponseDataInnerFromJSON","exists","TimeseriesResponseOHLCVResponseToJSON","TimeseriesResponseOHLCVResponseDataInnerToJSON","instanceOfTimeseriesResponseVolumeHistoryResponseDataInner","TimeseriesResponseVolumeHistoryResponseDataInnerFromJSON","TimeseriesResponseVolumeHistoryResponseDataInnerFromJSONTyped","TimeseriesResponseVolumeHistoryResponseDataInnerToJSON","instanceOfTimeseriesResponseVolumeHistoryResponse","TimeseriesResponseVolumeHistoryResponseFromJSON","TimeseriesResponseVolumeHistoryResponseFromJSONTyped","TimeseriesResponseVolumeHistoryResponseDataInnerFromJSON","exists","TimeseriesResponseVolumeHistoryResponseToJSON","TimeseriesResponseVolumeHistoryResponseDataInnerToJSON","instanceOfVolumeHistoryResponse","VolumeHistoryResponseFromJSON","VolumeHistoryResponseFromJSONTyped","VolumeHistoryResponseToJSON","PoolsApi","runtime.BaseAPI","runtime.RequiredError","runtime.JSONApiResponse","PaginationResponsePoolResponseFromJSON","PaginationResponseGroupResponseFromJSON","TimeseriesResponseVolumeHistoryResponseFromJSON","TimeseriesResponseOHLCVResponseFromJSON","PoolResponseFromJSON","GetPools200ResponseFromJSON","StatsApi","runtime.BaseAPI","runtime.JSONApiResponse","ProtocolMetricsResponseFromJSON","Configuration","PoolsApi","StatsApi","BASE_PATH","Configuration","querystring","DefaultConfig","BaseAPI","ResponseError","isFormData","isBlob","FetchError","RequiredError","COLLECTION_FORMATS","exists","querystringSingleKey","mapValues","canConsumeForm","JSONApiResponse","VoidApiResponse","BlobApiResponse","TextApiResponse","exists","exists","exists","exists","exists","exists","exists","exists","exists","exists","exists","exists","exists","exists","exists","exists","exists","exists","exists","exists","exists","exists","exists","runtime.BaseAPI","runtime.RequiredError","runtime.JSONApiResponse","runtime.BaseAPI","runtime.RequiredError","runtime.JSONApiResponse","runtime.BaseAPI","runtime.RequiredError","runtime.JSONApiResponse","runtime.BaseAPI","runtime.RequiredError","runtime.JSONApiResponse","runtime.BaseAPI","runtime.JSONApiResponse","runtime.BaseAPI","runtime.RequiredError","runtime.JSONApiResponse","Configuration","BASE_PATH","Configuration","querystring","DefaultConfig","BaseAPI","ResponseError","isFormData","isBlob","FetchError","RequiredError","COLLECTION_FORMATS","exists","querystringSingleKey","mapValues","canConsumeForm","JSONApiResponse","VoidApiResponse","BlobApiResponse","TextApiResponse","runtime.BaseAPI","runtime.RequiredError","runtime.JSONApiResponse","runtime.BaseAPI","runtime.JSONApiResponse","runtime.RequiredError","runtime.BaseAPI","runtime.RequiredError","runtime.JSONApiResponse","Configuration","runtime.BaseAPI","runtime.JSONApiResponse","runtime.BaseAPI","runtime.JSONApiResponse","runtime.RequiredError"],"sources":["../generated/ts/damm-v1/runtime.ts","../generated/ts/damm-v1/models/PoolMetrics.ts","../generated/ts/damm-v1/models/AggregatePoolsMetrics.ts","../generated/ts/damm-v1/models/AlphaVaultFcfsVaultConfigModel.ts","../generated/ts/damm-v1/models/AlphaVaultProrataVaultConfigModel.ts","../generated/ts/damm-v1/models/AlphaVaultResponse.ts","../generated/ts/damm-v1/models/AlphaVaultVaultConfigResponse.ts","../generated/ts/damm-v1/models/FeeConfigResponse.ts","../generated/ts/damm-v1/models/Metrics.ts","../generated/ts/damm-v1/models/OrderBy.ts","../generated/ts/damm-v1/models/PoolResponse.ts","../generated/ts/damm-v1/models/PaginatedPoolResponse.ts","../generated/ts/damm-v1/models/PoolConfigResponse.ts","../generated/ts/damm-v1/models/PoolPostRequest.ts","../generated/ts/damm-v1/models/PoolSortKey.ts","../generated/ts/damm-v1/models/PoolTypeQueryParam.ts","../generated/ts/damm-v1/models/SwapMetrics.ts","../generated/ts/damm-v1/apis/AlphaVaultApi.ts","../generated/ts/damm-v1/apis/FeeConfigsApi.ts","../generated/ts/damm-v1/apis/PoolsApi.ts","../clients/ts/config.ts","../clients/ts/DammV1Api.ts","../generated/ts/damm-v2/runtime.ts","../generated/ts/damm-v2/models/AmountTotals.ts","../generated/ts/damm-v2/models/CurrentPosition.ts","../generated/ts/damm-v2/models/CursorV1PaginationResponsePortfolioResponseDataInner.ts","../generated/ts/damm-v2/models/CursorV1PaginationResponsePortfolioResponse.ts","../generated/ts/damm-v2/models/CursorV1PaginationResponsePositionsResponseDataInner.ts","../generated/ts/damm-v2/models/CursorV1PaginationResponsePositionsResponse.ts","../generated/ts/damm-v2/models/ErrorResponse.ts","../generated/ts/damm-v2/models/GetGroupDetailsParams.ts","../generated/ts/damm-v2/models/GetGroupsQuery.ts","../generated/ts/damm-v2/models/GetPoolParams.ts","../generated/ts/damm-v2/models/PoolConfig.ts","../generated/ts/damm-v2/models/TimeWindowData.ts","../generated/ts/damm-v2/models/TokenMetrics.ts","../generated/ts/damm-v2/models/VestedLiquidity.ts","../generated/ts/damm-v2/models/GetPools200ResponseDataInner.ts","../generated/ts/damm-v2/models/GetPools200Response.ts","../generated/ts/damm-v2/models/GetPoolsQuery.ts","../generated/ts/damm-v2/models/GroupResponse.ts","../generated/ts/damm-v2/models/OHLCVResponse.ts","../generated/ts/damm-v2/models/PaginationResponseGroupResponseDataInner.ts","../generated/ts/damm-v2/models/PaginationResponseGroupResponse.ts","../generated/ts/damm-v2/models/PaginationResponsePoolResponse.ts","../generated/ts/damm-v2/models/PoolResponse.ts","../generated/ts/damm-v2/models/PoolsSortBy.ts","../generated/ts/damm-v2/models/PortfolioResponse.ts","../generated/ts/damm-v2/models/PositionStatus.ts","../generated/ts/damm-v2/models/PositionsResponse.ts","../generated/ts/damm-v2/models/ProtocolMetricsResponse.ts","../generated/ts/damm-v2/models/SortDirection.ts","../generated/ts/damm-v2/models/TimeFrame.ts","../generated/ts/damm-v2/models/TimeseriesResponseOHLCVResponseDataInner.ts","../generated/ts/damm-v2/models/TimeseriesResponseOHLCVResponse.ts","../generated/ts/damm-v2/models/TimeseriesResponseVolumeHistoryResponseDataInner.ts","../generated/ts/damm-v2/models/TimeseriesResponseVolumeHistoryResponse.ts","../generated/ts/damm-v2/models/VolumeHistoryResponse.ts","../generated/ts/damm-v2/apis/PoolsApi.ts","../generated/ts/damm-v2/apis/StatsApi.ts","../clients/ts/DammV2Api.ts","../generated/ts/dlmm/runtime.ts","../generated/ts/dlmm/models/AddressPath.ts","../generated/ts/dlmm/models/AmountTotals.ts","../generated/ts/dlmm/models/BonusClaimedResponse.ts","../generated/ts/dlmm/models/ClosedLimitOrderDetail.ts","../generated/ts/dlmm/models/LimitOrderPoolDetails.ts","../generated/ts/dlmm/models/ClosedLimitOrderPoolSummary.ts","../generated/ts/dlmm/models/ClosedLimitOrdersForPoolResponse.ts","../generated/ts/dlmm/models/ClosedPositionsResponse.ts","../generated/ts/dlmm/models/CumulativeMetrics.ts","../generated/ts/dlmm/models/CurrentPosition.ts","../generated/ts/dlmm/models/ErrorResponse.ts","../generated/ts/dlmm/models/GetGroupDetailsParams.ts","../generated/ts/dlmm/models/GetGroupsQuery.ts","../generated/ts/dlmm/models/GetOpenPortfolioSort.ts","../generated/ts/dlmm/models/SortDirection.ts","../generated/ts/dlmm/models/GetOpenPortfolioQuery.ts","../generated/ts/dlmm/models/PoolOpenPortfolioItem.ts","../generated/ts/dlmm/models/TotalMetrics.ts","../generated/ts/dlmm/models/GetOpenPortfolioResponse.ts","../generated/ts/dlmm/models/GetPoolParams.ts","../generated/ts/dlmm/models/PositionStatus.ts","../generated/ts/dlmm/models/GetPoolPositionPnLQuery.ts","../generated/ts/dlmm/models/TokenAmount.ts","../generated/ts/dlmm/models/TotalUsd.ts","../generated/ts/dlmm/models/TokenPairWithTotal.ts","../generated/ts/dlmm/models/UnrealizedPnL.ts","../generated/ts/dlmm/models/PositionPnLData.ts","../generated/ts/dlmm/models/GetPoolPositionPnLResponse.ts","../generated/ts/dlmm/models/PoolConfig.ts","../generated/ts/dlmm/models/TimeWindowData.ts","../generated/ts/dlmm/models/TokenMetrics.ts","../generated/ts/dlmm/models/GetPools200ResponseDataInner.ts","../generated/ts/dlmm/models/GetPools200Response.ts","../generated/ts/dlmm/models/GetPoolsQuery.ts","../generated/ts/dlmm/models/GetPortfolioQuery.ts","../generated/ts/dlmm/models/PoolPortfolioItem.ts","../generated/ts/dlmm/models/GetPortfolioResponse.ts","../generated/ts/dlmm/models/GetPortfolioTotalQuery.ts","../generated/ts/dlmm/models/PositionEventOrderDirection.ts","../generated/ts/dlmm/models/PositionEventType.ts","../generated/ts/dlmm/models/GetPositionHistoricalEventsQuery.ts","../generated/ts/dlmm/models/PositionEvent.ts","../generated/ts/dlmm/models/GetPositionHistoricalEventsResponse.ts","../generated/ts/dlmm/models/GetWalletPoolAccumulatedFeesParams.ts","../generated/ts/dlmm/models/GetWalletTotalClaimsResponse.ts","../generated/ts/dlmm/models/GroupResponse.ts","../generated/ts/dlmm/models/LimitOrderBinFillStatus.ts","../generated/ts/dlmm/models/LimitOrderSummaryResponse.ts","../generated/ts/dlmm/models/LimitOrdersPaginationQuery.ts","../generated/ts/dlmm/models/LimitOrdersWalletPath.ts","../generated/ts/dlmm/models/LimitOrdersWalletPoolPath.ts","../generated/ts/dlmm/models/OHLCVResponse.ts","../generated/ts/dlmm/models/OpenLimitOrderBinPoint.ts","../generated/ts/dlmm/models/OpenLimitOrderDetail.ts","../generated/ts/dlmm/models/OpenLimitOrderPoolSummary.ts","../generated/ts/dlmm/models/OpenLimitOrdersForPoolResponse.ts","../generated/ts/dlmm/models/OpenPosition.ts","../generated/ts/dlmm/models/Token.ts","../generated/ts/dlmm/models/PositionsByPool.ts","../generated/ts/dlmm/models/OpenPositionsResponse.ts","../generated/ts/dlmm/models/PaginationResponseClosedLimitOrderPoolSummaryDataInner.ts","../generated/ts/dlmm/models/PaginationResponseClosedLimitOrderPoolSummary.ts","../generated/ts/dlmm/models/PaginationResponseGroupResponseDataInner.ts","../generated/ts/dlmm/models/PaginationResponseGroupResponse.ts","../generated/ts/dlmm/models/PaginationResponseOpenLimitOrderPoolSummaryDataInner.ts","../generated/ts/dlmm/models/PaginationResponseOpenLimitOrderPoolSummary.ts","../generated/ts/dlmm/models/PaginationResponsePoolResponse.ts","../generated/ts/dlmm/models/PoolAddressPath.ts","../generated/ts/dlmm/models/PoolResponse.ts","../generated/ts/dlmm/models/PoolsSortBy.ts","../generated/ts/dlmm/models/PortfolioTotalResponse.ts","../generated/ts/dlmm/models/ProtocolMetricsResponse.ts","../generated/ts/dlmm/models/TimeFrame.ts","../generated/ts/dlmm/models/TimeseriesResponseOHLCVResponseDataInner.ts","../generated/ts/dlmm/models/TimeseriesResponseOHLCVResponse.ts","../generated/ts/dlmm/models/TimeseriesResponseVolumeHistoryResponseDataInner.ts","../generated/ts/dlmm/models/TimeseriesResponseVolumeHistoryResponse.ts","../generated/ts/dlmm/models/VolumeHistoryResponse.ts","../generated/ts/dlmm/apis/LimitOrdersApi.ts","../generated/ts/dlmm/apis/PoolsApi.ts","../generated/ts/dlmm/apis/PortfolioApi.ts","../generated/ts/dlmm/apis/PositionsApi.ts","../generated/ts/dlmm/apis/StatsApi.ts","../generated/ts/dlmm/apis/WalletsApi.ts","../clients/ts/DlmmApi.ts","../generated/ts/dynamic-vault/runtime.ts","../generated/ts/dynamic-vault/models/ProtocolApy.ts","../generated/ts/dynamic-vault/models/ApyState.ts","../generated/ts/dynamic-vault/models/StrategyInfo.ts","../generated/ts/dynamic-vault/models/VaultAddress.ts","../generated/ts/dynamic-vault/models/VaultState.ts","../generated/ts/dynamic-vault/models/VirtualPrice.ts","../generated/ts/dynamic-vault/apis/APYApi.ts","../generated/ts/dynamic-vault/apis/VaultsApi.ts","../generated/ts/dynamic-vault/apis/VirtualPriceApi.ts","../clients/ts/DynamicVaultApi.ts","../generated/ts/stake2earn/runtime.ts","../generated/ts/stake2earn/models/AggregateAnalyticInfo.ts","../generated/ts/stake2earn/models/VaultFlags.ts","../generated/ts/stake2earn/models/Vault.ts","../generated/ts/stake2earn/models/VaultTopListHolder.ts","../generated/ts/stake2earn/models/VaultDetailWithLeaderboard.ts","../generated/ts/stake2earn/models/VaultsResponse.ts","../generated/ts/stake2earn/apis/AnalyticsApi.ts","../generated/ts/stake2earn/apis/VaultApi.ts","../clients/ts/Stake2EarnApi.ts","../generated/ts/damm-v1/index.ts","../generated/ts/damm-v2/index.ts","../generated/ts/dlmm/index.ts","../generated/ts/dynamic-vault/index.ts","../generated/ts/stake2earn/index.ts"],"sourcesContent":["/* tslint:disable */\n/* eslint-disable */\n/**\n * dynamic-amm-keeper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport const BASE_PATH = \"https://damm-api.meteora.ag\".replace(/\\/+$/, \"\");\n\nexport interface ConfigurationParameters {\n basePath?: string; // override base path\n fetchApi?: FetchAPI; // override for fetch implementation\n middleware?: Middleware[]; // middleware to apply before/after fetch requests\n queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings\n username?: string; // parameter for basic security\n password?: string; // parameter for basic security\n apiKey?: string | Promise<string> | ((name: string) => string | Promise<string>); // parameter for apiKey security\n accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string | Promise<string>); // parameter for oauth2 security\n headers?: HTTPHeaders; //header params we want to use on every request\n credentials?: RequestCredentials; //value for the credentials param we want to use on each request\n}\n\nexport class Configuration {\n constructor(private configuration: ConfigurationParameters = {}) {}\n\n set config(configuration: Configuration) {\n this.configuration = configuration;\n }\n\n get basePath(): string {\n return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH;\n }\n\n get fetchApi(): FetchAPI | undefined {\n return this.configuration.fetchApi;\n }\n\n get middleware(): Middleware[] {\n return this.configuration.middleware || [];\n }\n\n get queryParamsStringify(): (params: HTTPQuery) => string {\n return this.configuration.queryParamsStringify || querystring;\n }\n\n get username(): string | undefined {\n return this.configuration.username;\n }\n\n get password(): string | undefined {\n return this.configuration.password;\n }\n\n get apiKey(): ((name: string) => string | Promise<string>) | undefined {\n const apiKey = this.configuration.apiKey;\n if (apiKey) {\n return typeof apiKey === 'function' ? apiKey : () => apiKey;\n }\n return undefined;\n }\n\n get accessToken(): ((name?: string, scopes?: string[]) => string | Promise<string>) | undefined {\n const accessToken = this.configuration.accessToken;\n if (accessToken) {\n return typeof accessToken === 'function' ? accessToken : async () => accessToken;\n }\n return undefined;\n }\n\n get headers(): HTTPHeaders | undefined {\n return this.configuration.headers;\n }\n\n get credentials(): RequestCredentials | undefined {\n return this.configuration.credentials;\n }\n}\n\nexport const DefaultConfig = new Configuration();\n\n/**\n * This is the base class for all generated API classes.\n */\nexport class BaseAPI {\n\n private static readonly jsonRegex = new RegExp('^(:?application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(:?;.*)?$', 'i');\n private middleware: Middleware[];\n\n constructor(protected configuration = DefaultConfig) {\n this.middleware = configuration.middleware;\n }\n\n withMiddleware<T extends BaseAPI>(this: T, ...middlewares: Middleware[]) {\n const next = this.clone<T>();\n next.middleware = next.middleware.concat(...middlewares);\n return next;\n }\n\n withPreMiddleware<T extends BaseAPI>(this: T, ...preMiddlewares: Array<Middleware['pre']>) {\n const middlewares = preMiddlewares.map((pre) => ({ pre }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n withPostMiddleware<T extends BaseAPI>(this: T, ...postMiddlewares: Array<Middleware['post']>) {\n const middlewares = postMiddlewares.map((post) => ({ post }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n /**\n * Check if the given MIME is a JSON MIME.\n * JSON MIME examples:\n * application/json\n * application/json; charset=UTF8\n * APPLICATION/JSON\n * application/vnd.company+json\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\n * @return True if the given MIME is JSON, false otherwise.\n */\n protected isJsonMime(mime: string | null | undefined): boolean {\n if (!mime) {\n return false;\n }\n return BaseAPI.jsonRegex.test(mime);\n }\n\n protected async request(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction): Promise<Response> {\n const { url, init } = await this.createFetchParams(context, initOverrides);\n const response = await this.fetchApi(url, init);\n if (response && (response.status >= 200 && response.status < 300)) {\n return response;\n }\n throw new ResponseError(response, 'Response returned an error code');\n }\n\n private async createFetchParams(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction) {\n let url = this.configuration.basePath + context.path;\n if (context.query !== undefined && Object.keys(context.query).length !== 0) {\n // only add the querystring to the URL if there are query parameters.\n // this is done to avoid urls ending with a \"?\" character which buggy webservers\n // do not handle correctly sometimes.\n url += '?' + this.configuration.queryParamsStringify(context.query);\n }\n\n const headers = Object.assign({}, this.configuration.headers, context.headers);\n Object.keys(headers).forEach(key => headers[key] === undefined ? delete headers[key] : {});\n\n const initOverrideFn =\n typeof initOverrides === \"function\"\n ? initOverrides\n : async () => initOverrides;\n\n const initParams = {\n method: context.method,\n headers,\n body: context.body,\n credentials: this.configuration.credentials,\n };\n\n const overriddenInit: RequestInit = {\n ...initParams,\n ...(await initOverrideFn({\n init: initParams,\n context,\n }))\n };\n\n let body: any;\n if (isFormData(overriddenInit.body)\n || (overriddenInit.body instanceof URLSearchParams)\n || isBlob(overriddenInit.body)) {\n body = overriddenInit.body;\n } else if (this.isJsonMime(headers['Content-Type'])) {\n body = JSON.stringify(overriddenInit.body);\n } else {\n body = overriddenInit.body;\n }\n\n const init: RequestInit = {\n ...overriddenInit,\n body\n };\n\n return { url, init };\n }\n\n private fetchApi = async (url: string, init: RequestInit) => {\n let fetchParams = { url, init };\n for (const middleware of this.middleware) {\n if (middleware.pre) {\n fetchParams = await middleware.pre({\n fetch: this.fetchApi,\n ...fetchParams,\n }) || fetchParams;\n }\n }\n let response: Response | undefined = undefined;\n try {\n response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init);\n } catch (e) {\n for (const middleware of this.middleware) {\n if (middleware.onError) {\n response = await middleware.onError({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n error: e,\n response: response ? response.clone() : undefined,\n }) || response;\n }\n }\n if (response === undefined) {\n if (e instanceof Error) {\n throw new FetchError(e, 'The request failed and the interceptors did not return an alternative response');\n } else {\n throw e;\n }\n }\n }\n for (const middleware of this.middleware) {\n if (middleware.post) {\n response = await middleware.post({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n response: response.clone(),\n }) || response;\n }\n }\n return response;\n }\n\n /**\n * Create a shallow clone of `this` by constructing a new instance\n * and then shallow cloning data members.\n */\n private clone<T extends BaseAPI>(this: T): T {\n const constructor = this.constructor as any;\n const next = new constructor(this.configuration);\n next.middleware = this.middleware.slice();\n return next;\n }\n};\n\nfunction isBlob(value: any): value is Blob {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n\nfunction isFormData(value: any): value is FormData {\n return typeof FormData !== \"undefined\" && value instanceof FormData;\n}\n\nexport class ResponseError extends Error {\n override name: \"ResponseError\" = \"ResponseError\";\n constructor(public response: Response, msg?: string) {\n super(msg);\n }\n}\n\nexport class FetchError extends Error {\n override name: \"FetchError\" = \"FetchError\";\n constructor(public cause: Error, msg?: string) {\n super(msg);\n }\n}\n\nexport class RequiredError extends Error {\n override name: \"RequiredError\" = \"RequiredError\";\n constructor(public field: string, msg?: string) {\n super(msg);\n }\n}\n\nexport const COLLECTION_FORMATS = {\n csv: \",\",\n ssv: \" \",\n tsv: \"\\t\",\n pipes: \"|\",\n};\n\nexport type FetchAPI = WindowOrWorkerGlobalScope['fetch'];\n\nexport type Json = any;\nexport type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD';\nexport type HTTPHeaders = { [key: string]: string };\nexport type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery };\nexport type HTTPBody = Json | FormData | URLSearchParams;\nexport type HTTPRequestInit = { headers?: HTTPHeaders; method: HTTPMethod; credentials?: RequestCredentials; body?: HTTPBody };\nexport type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';\n\nexport type InitOverrideFunction = (requestContext: { init: HTTPRequestInit, context: RequestOpts }) => Promise<RequestInit>\n\nexport interface FetchParams {\n url: string;\n init: RequestInit;\n}\n\nexport interface RequestOpts {\n path: string;\n method: HTTPMethod;\n headers: HTTPHeaders;\n query?: HTTPQuery;\n body?: HTTPBody;\n}\n\nexport function exists(json: any, key: string) {\n const value = json[key];\n return value !== null && value !== undefined;\n}\n\nexport function querystring(params: HTTPQuery, prefix: string = ''): string {\n return Object.keys(params)\n .map(key => querystringSingleKey(key, params[key], prefix))\n .filter(part => part.length > 0)\n .join('&');\n}\n\nfunction querystringSingleKey(key: string, value: string | number | null | undefined | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery, keyPrefix: string = ''): string {\n const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key);\n if (value instanceof Array) {\n const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue)))\n .join(`&${encodeURIComponent(fullKey)}=`);\n return `${encodeURIComponent(fullKey)}=${multiValue}`;\n }\n if (value instanceof Set) {\n const valueAsArray = Array.from(value);\n return querystringSingleKey(key, valueAsArray, keyPrefix);\n }\n if (value instanceof Date) {\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`;\n }\n if (value instanceof Object) {\n return querystring(value as HTTPQuery, fullKey);\n }\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`;\n}\n\nexport function mapValues(data: any, fn: (item: any) => any) {\n return Object.keys(data).reduce(\n (acc, key) => ({ ...acc, [key]: fn(data[key]) }),\n {}\n );\n}\n\nexport function canConsumeForm(consumes: Consume[]): boolean {\n for (const consume of consumes) {\n if ('multipart/form-data' === consume.contentType) {\n return true;\n }\n }\n return false;\n}\n\nexport interface Consume {\n contentType: string;\n}\n\nexport interface RequestContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n}\n\nexport interface ResponseContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n response: Response;\n}\n\nexport interface ErrorContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n error: unknown;\n response?: Response;\n}\n\nexport interface Middleware {\n pre?(context: RequestContext): Promise<FetchParams | void>;\n post?(context: ResponseContext): Promise<Response | void>;\n onError?(context: ErrorContext): Promise<Response | void>;\n}\n\nexport interface ApiResponse<T> {\n raw: Response;\n value(): Promise<T>;\n}\n\nexport interface ResponseTransformer<T> {\n (json: any): T;\n}\n\nexport class JSONApiResponse<T> {\n constructor(public raw: Response, private transformer: ResponseTransformer<T> = (jsonValue: any) => jsonValue) {}\n\n async value(): Promise<T> {\n return this.transformer(await this.raw.json());\n }\n}\n\nexport class VoidApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<void> {\n return undefined;\n }\n}\n\nexport class BlobApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<Blob> {\n return await this.raw.blob();\n };\n}\n\nexport class TextApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<string> {\n return await this.raw.text();\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * dynamic-amm-keeper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface PoolMetrics\n */\nexport interface PoolMetrics {\n /**\n * \n * @type {number}\n * @memberof PoolMetrics\n */\n dailyFee: number;\n /**\n * \n * @type {number}\n * @memberof PoolMetrics\n */\n dailyVolume: number;\n /**\n * \n * @type {number}\n * @memberof PoolMetrics\n */\n totalFee: number;\n /**\n * \n * @type {number}\n * @memberof PoolMetrics\n */\n totalVolume: number;\n /**\n * \n * @type {number}\n * @memberof PoolMetrics\n */\n tvl: number;\n}\n\n/**\n * Check if a given object implements the PoolMetrics interface.\n */\nexport function instanceOfPoolMetrics(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"dailyFee\" in value;\n isInstance = isInstance && \"dailyVolume\" in value;\n isInstance = isInstance && \"totalFee\" in value;\n isInstance = isInstance && \"totalVolume\" in value;\n isInstance = isInstance && \"tvl\" in value;\n\n return isInstance;\n}\n\nexport function PoolMetricsFromJSON(json: any): PoolMetrics {\n return PoolMetricsFromJSONTyped(json, false);\n}\n\nexport function PoolMetricsFromJSONTyped(json: any, ignoreDiscriminator: boolean): PoolMetrics {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'dailyFee': json['daily_fee'],\n 'dailyVolume': json['daily_volume'],\n 'totalFee': json['total_fee'],\n 'totalVolume': json['total_volume'],\n 'tvl': json['tvl'],\n };\n}\n\nexport function PoolMetricsToJSON(value?: PoolMetrics | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'daily_fee': value.dailyFee,\n 'daily_volume': value.dailyVolume,\n 'total_fee': value.totalFee,\n 'total_volume': value.totalVolume,\n 'tvl': value.tvl,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * dynamic-amm-keeper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { PoolMetrics } from './PoolMetrics';\nimport {\n PoolMetricsFromJSON,\n PoolMetricsFromJSONTyped,\n PoolMetricsToJSON,\n} from './PoolMetrics';\n\n/**\n * \n * @export\n * @interface AggregatePoolsMetrics\n */\nexport interface AggregatePoolsMetrics {\n /**\n * \n * @type {number}\n * @memberof AggregatePoolsMetrics\n */\n dailyFee: number;\n /**\n * \n * @type {number}\n * @memberof AggregatePoolsMetrics\n */\n dailyVolume: number;\n /**\n * \n * @type {number}\n * @memberof AggregatePoolsMetrics\n */\n totalFee: number;\n /**\n * \n * @type {number}\n * @memberof AggregatePoolsMetrics\n */\n totalVolume: number;\n /**\n * \n * @type {number}\n * @memberof AggregatePoolsMetrics\n */\n tvl: number;\n /**\n * \n * @type {PoolMetrics}\n * @memberof AggregatePoolsMetrics\n */\n dynamicAmm: PoolMetrics;\n /**\n * \n * @type {PoolMetrics}\n * @memberof AggregatePoolsMetrics\n */\n farms: PoolMetrics;\n /**\n * \n * @type {PoolMetrics}\n * @memberof AggregatePoolsMetrics\n */\n lst: PoolMetrics;\n /**\n * \n * @type {PoolMetrics}\n * @memberof AggregatePoolsMetrics\n */\n multitokens: PoolMetrics;\n}\n\n/**\n * Check if a given object implements the AggregatePoolsMetrics interface.\n */\nexport function instanceOfAggregatePoolsMetrics(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"dailyFee\" in value;\n isInstance = isInstance && \"dailyVolume\" in value;\n isInstance = isInstance && \"totalFee\" in value;\n isInstance = isInstance && \"totalVolume\" in value;\n isInstance = isInstance && \"tvl\" in value;\n isInstance = isInstance && \"dynamicAmm\" in value;\n isInstance = isInstance && \"farms\" in value;\n isInstance = isInstance && \"lst\" in value;\n isInstance = isInstance && \"multitokens\" in value;\n\n return isInstance;\n}\n\nexport function AggregatePoolsMetricsFromJSON(json: any): AggregatePoolsMetrics {\n return AggregatePoolsMetricsFromJSONTyped(json, false);\n}\n\nexport function AggregatePoolsMetricsFromJSONTyped(json: any, ignoreDiscriminator: boolean): AggregatePoolsMetrics {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'dailyFee': json['daily_fee'],\n 'dailyVolume': json['daily_volume'],\n 'totalFee': json['total_fee'],\n 'totalVolume': json['total_volume'],\n 'tvl': json['tvl'],\n 'dynamicAmm': PoolMetricsFromJSON(json['dynamic_amm']),\n 'farms': PoolMetricsFromJSON(json['farms']),\n 'lst': PoolMetricsFromJSON(json['lst']),\n 'multitokens': PoolMetricsFromJSON(json['multitokens']),\n };\n}\n\nexport function AggregatePoolsMetricsToJSON(value?: AggregatePoolsMetrics | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'daily_fee': value.dailyFee,\n 'daily_volume': value.dailyVolume,\n 'total_fee': value.totalFee,\n 'total_volume': value.totalVolume,\n 'tvl': value.tvl,\n 'dynamic_amm': PoolMetricsToJSON(value.dynamicAmm),\n 'farms': PoolMetricsToJSON(value.farms),\n 'lst': PoolMetricsToJSON(value.lst),\n 'multitokens': PoolMetricsToJSON(value.multitokens),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * dynamic-amm-keeper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface AlphaVaultFcfsVaultConfigModel\n */\nexport interface AlphaVaultFcfsVaultConfigModel {\n /**\n * \n * @type {number}\n * @memberof AlphaVaultFcfsVaultConfigModel\n */\n activationType: number;\n /**\n * \n * @type {string}\n * @memberof AlphaVaultFcfsVaultConfigModel\n */\n address: string;\n /**\n * \n * @type {number}\n * @memberof AlphaVaultFcfsVaultConfigModel\n */\n depositingDurationUntilLastJoinPoint: number;\n /**\n * \n * @type {number}\n * @memberof AlphaVaultFcfsVaultConfigModel\n */\n endVestingDuration: number;\n /**\n * \n * @type {number}\n * @memberof AlphaVaultFcfsVaultConfigModel\n */\n escrowFee: number;\n /**\n * \n * @type {number}\n * @memberof AlphaVaultFcfsVaultConfigModel\n */\n individualDepositingCap: number;\n /**\n * \n * @type {number}\n * @memberof AlphaVaultFcfsVaultConfigModel\n */\n maxDepositingCap: number;\n /**\n * \n * @type {number}\n * @memberof AlphaVaultFcfsVaultConfigModel\n */\n startVestingDuration: number;\n}\n\n/**\n * Check if a given object implements the AlphaVaultFcfsVaultConfigModel interface.\n */\nexport function instanceOfAlphaVaultFcfsVaultConfigModel(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"activationType\" in value;\n isInstance = isInstance && \"address\" in value;\n isInstance = isInstance && \"depositingDurationUntilLastJoinPoint\" in value;\n isInstance = isInstance && \"endVestingDuration\" in value;\n isInstance = isInstance && \"escrowFee\" in value;\n isInstance = isInstance && \"individualDepositingCap\" in value;\n isInstance = isInstance && \"maxDepositingCap\" in value;\n isInstance = isInstance && \"startVestingDuration\" in value;\n\n return isInstance;\n}\n\nexport function AlphaVaultFcfsVaultConfigModelFromJSON(json: any): AlphaVaultFcfsVaultConfigModel {\n return AlphaVaultFcfsVaultConfigModelFromJSONTyped(json, false);\n}\n\nexport function AlphaVaultFcfsVaultConfigModelFromJSONTyped(json: any, ignoreDiscriminator: boolean): AlphaVaultFcfsVaultConfigModel {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'activationType': json['activation_type'],\n 'address': json['address'],\n 'depositingDurationUntilLastJoinPoint': json['depositing_duration_until_last_join_point'],\n 'endVestingDuration': json['end_vesting_duration'],\n 'escrowFee': json['escrow_fee'],\n 'individualDepositingCap': json['individual_depositing_cap'],\n 'maxDepositingCap': json['max_depositing_cap'],\n 'startVestingDuration': json['start_vesting_duration'],\n };\n}\n\nexport function AlphaVaultFcfsVaultConfigModelToJSON(value?: AlphaVaultFcfsVaultConfigModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'activation_type': value.activationType,\n 'address': value.address,\n 'depositing_duration_until_last_join_point': value.depositingDurationUntilLastJoinPoint,\n 'end_vesting_duration': value.endVestingDuration,\n 'escrow_fee': value.escrowFee,\n 'individual_depositing_cap': value.individualDepositingCap,\n 'max_depositing_cap': value.maxDepositingCap,\n 'start_vesting_duration': value.startVestingDuration,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * dynamic-amm-keeper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface AlphaVaultProrataVaultConfigModel\n */\nexport interface AlphaVaultProrataVaultConfigModel {\n /**\n * \n * @type {number}\n * @memberof AlphaVaultProrataVaultConfigModel\n */\n activationType: number;\n /**\n * \n * @type {string}\n * @memberof AlphaVaultProrataVaultConfigModel\n */\n address: string;\n /**\n * \n * @type {number}\n * @memberof AlphaVaultProrataVaultConfigModel\n */\n endVestingDuration: number;\n /**\n * \n * @type {number}\n * @memberof AlphaVaultProrataVaultConfigModel\n */\n escrowFee: number;\n /**\n * \n * @type {number}\n * @memberof AlphaVaultProrataVaultConfigModel\n */\n maxBuyingCap: number;\n /**\n * \n * @type {number}\n * @memberof AlphaVaultProrataVaultConfigModel\n */\n startVestingDuration: number;\n}\n\n/**\n * Check if a given object implements the AlphaVaultProrataVaultConfigModel interface.\n */\nexport function instanceOfAlphaVaultProrataVaultConfigModel(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"activationType\" in value;\n isInstance = isInstance && \"address\" in value;\n isInstance = isInstance && \"endVestingDuration\" in value;\n isInstance = isInstance && \"escrowFee\" in value;\n isInstance = isInstance && \"maxBuyingCap\" in value;\n isInstance = isInstance && \"startVestingDuration\" in value;\n\n return isInstance;\n}\n\nexport function AlphaVaultProrataVaultConfigModelFromJSON(json: any): AlphaVaultProrataVaultConfigModel {\n return AlphaVaultProrataVaultConfigModelFromJSONTyped(json, false);\n}\n\nexport function AlphaVaultProrataVaultConfigModelFromJSONTyped(json: any, ignoreDiscriminator: boolean): AlphaVaultProrataVaultConfigModel {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'activationType': json['activation_type'],\n 'address': json['address'],\n 'endVestingDuration': json['end_vesting_duration'],\n 'escrowFee': json['escrow_fee'],\n 'maxBuyingCap': json['max_buying_cap'],\n 'startVestingDuration': json['start_vesting_duration'],\n };\n}\n\nexport function AlphaVaultProrataVaultConfigModelToJSON(value?: AlphaVaultProrataVaultConfigModel | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'activation_type': value.activationType,\n 'address': value.address,\n 'end_vesting_duration': value.endVestingDuration,\n 'escrow_fee': value.escrowFee,\n 'max_buying_cap': value.maxBuyingCap,\n 'start_vesting_duration': value.startVestingDuration,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * dynamic-amm-keeper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface AlphaVaultResponse\n */\nexport interface AlphaVaultResponse {\n /**\n * \n * @type {string}\n * @memberof AlphaVaultResponse\n */\n base: string;\n /**\n * \n * @type {string}\n * @memberof AlphaVaultResponse\n */\n baseMint: string;\n /**\n * \n * @type {string}\n * @memberof AlphaVaultResponse\n */\n owner: string;\n /**\n * \n * @type {string}\n * @memberof AlphaVaultResponse\n */\n poolAddress: string;\n /**\n * \n * @type {number}\n * @memberof AlphaVaultResponse\n */\n poolType: number;\n /**\n * \n * @type {string}\n * @memberof AlphaVaultResponse\n */\n quoteMint: string;\n /**\n * \n * @type {string}\n * @memberof AlphaVaultResponse\n */\n tokenOutVault: string;\n /**\n * \n * @type {string}\n * @memberof AlphaVaultResponse\n */\n tokenVault: string;\n /**\n * \n * @type {string}\n * @memberof AlphaVaultResponse\n */\n vaultAddress: string;\n}\n\n/**\n * Check if a given object implements the AlphaVaultResponse interface.\n */\nexport function instanceOfAlphaVaultResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"base\" in value;\n isInstance = isInstance && \"baseMint\" in value;\n isInstance = isInstance && \"owner\" in value;\n isInstance = isInstance && \"poolAddress\" in value;\n isInstance = isInstance && \"poolType\" in value;\n isInstance = isInstance && \"quoteMint\" in value;\n isInstance = isInstance && \"tokenOutVault\" in value;\n isInstance = isInstance && \"tokenVault\" in value;\n isInstance = isInstance && \"vaultAddress\" in value;\n\n return isInstance;\n}\n\nexport function AlphaVaultResponseFromJSON(json: any): AlphaVaultResponse {\n return AlphaVaultResponseFromJSONTyped(json, false);\n}\n\nexport function AlphaVaultResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): AlphaVaultResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'base': json['base'],\n 'baseMint': json['base_mint'],\n 'owner': json['owner'],\n 'poolAddress': json['pool_address'],\n 'poolType': json['pool_type'],\n 'quoteMint': json['quote_mint'],\n 'tokenOutVault': json['token_out_vault'],\n 'tokenVault': json['token_vault'],\n 'vaultAddress': json['vault_address'],\n };\n}\n\nexport function AlphaVaultResponseToJSON(value?: AlphaVaultResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'base': value.base,\n 'base_mint': value.baseMint,\n 'owner': value.owner,\n 'pool_address': value.poolAddress,\n 'pool_type': value.poolType,\n 'quote_mint': value.quoteMint,\n 'token_out_vault': value.tokenOutVault,\n 'token_vault': value.tokenVault,\n 'vault_address': value.vaultAddress,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * dynamic-amm-keeper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { AlphaVaultFcfsVaultConfigModel } from './AlphaVaultFcfsVaultConfigModel';\nimport {\n AlphaVaultFcfsVaultConfigModelFromJSON,\n AlphaVaultFcfsVaultConfigModelFromJSONTyped,\n AlphaVaultFcfsVaultConfigModelToJSON,\n} from './AlphaVaultFcfsVaultConfigModel';\nimport type { AlphaVaultProrataVaultConfigModel } from './AlphaVaultProrataVaultConfigModel';\nimport {\n AlphaVaultProrataVaultConfigModelFromJSON,\n AlphaVaultProrataVaultConfigModelFromJSONTyped,\n AlphaVaultProrataVaultConfigModelToJSON,\n} from './AlphaVaultProrataVaultConfigModel';\n\n/**\n * \n * @export\n * @interface AlphaVaultVaultConfigResponse\n */\nexport interface AlphaVaultVaultConfigResponse {\n /**\n * \n * @type {Array<AlphaVaultFcfsVaultConfigModel>}\n * @memberof AlphaVaultVaultConfigResponse\n */\n fcfsConfigs: Array<AlphaVaultFcfsVaultConfigModel>;\n /**\n * \n * @type {Array<AlphaVaultProrataVaultConfigModel>}\n * @memberof AlphaVaultVaultConfigResponse\n */\n prorataConfigs: Array<AlphaVaultProrataVaultConfigModel>;\n}\n\n/**\n * Check if a given object implements the AlphaVaultVaultConfigResponse interface.\n */\nexport function instanceOfAlphaVaultVaultConfigResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"fcfsConfigs\" in value;\n isInstance = isInstance && \"prorataConfigs\" in value;\n\n return isInstance;\n}\n\nexport function AlphaVaultVaultConfigResponseFromJSON(json: any): AlphaVaultVaultConfigResponse {\n return AlphaVaultVaultConfigResponseFromJSONTyped(json, false);\n}\n\nexport function AlphaVaultVaultConfigResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): AlphaVaultVaultConfigResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'fcfsConfigs': ((json['fcfs_configs'] as Array<any>).map(AlphaVaultFcfsVaultConfigModelFromJSON)),\n 'prorataConfigs': ((json['prorata_configs'] as Array<any>).map(AlphaVaultProrataVaultConfigModelFromJSON)),\n };\n}\n\nexport function AlphaVaultVaultConfigResponseToJSON(value?: AlphaVaultVaultConfigResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'fcfs_configs': ((value.fcfsConfigs as Array<any>).map(AlphaVaultFcfsVaultConfigModelToJSON)),\n 'prorata_configs': ((value.prorataConfigs as Array<any>).map(AlphaVaultProrataVaultConfigModelToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * dynamic-amm-keeper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface FeeConfigResponse\n */\nexport interface FeeConfigResponse {\n /**\n * \n * @type {number}\n * @memberof FeeConfigResponse\n */\n activateDurationAfterTradeInSeconds: number;\n /**\n * \n * @type {string}\n * @memberof FeeConfigResponse\n */\n configAddress: string;\n /**\n * \n * @type {string}\n * @memberof FeeConfigResponse\n */\n creatorAuthority: string;\n /**\n * \n * @type {string}\n * @memberof FeeConfigResponse\n */\n feePercentage: string;\n}\n\n/**\n * Check if a given object implements the FeeConfigResponse interface.\n */\nexport function instanceOfFeeConfigResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"activateDurationAfterTradeInSeconds\" in value;\n isInstance = isInstance && \"configAddress\" in value;\n isInstance = isInstance && \"creatorAuthority\" in value;\n isInstance = isInstance && \"feePercentage\" in value;\n\n return isInstance;\n}\n\nexport function FeeConfigResponseFromJSON(json: any): FeeConfigResponse {\n return FeeConfigResponseFromJSONTyped(json, false);\n}\n\nexport function FeeConfigResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): FeeConfigResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'activateDurationAfterTradeInSeconds': json['activate_duration_after_trade_in_seconds'],\n 'configAddress': json['config_address'],\n 'creatorAuthority': json['creator_authority'],\n 'feePercentage': json['fee_percentage'],\n };\n}\n\nexport function FeeConfigResponseToJSON(value?: FeeConfigResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'activate_duration_after_trade_in_seconds': value.activateDurationAfterTradeInSeconds,\n 'config_address': value.configAddress,\n 'creator_authority': value.creatorAuthority,\n 'fee_percentage': value.feePercentage,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * dynamic-amm-keeper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * Subfield for pool response in /pools, it contain metrics for each pool\n * @export\n * @interface Metrics\n */\nexport interface Metrics {\n /**\n * \n * @type {number}\n * @memberof Metrics\n */\n feeVolume: number;\n /**\n * \n * @type {number}\n * @memberof Metrics\n */\n tradingVolume: number;\n /**\n * Accumulated fee volume\n * @type {number}\n * @memberof Metrics\n */\n accumulatedFeeVolume: number;\n /**\n * Accumulated trading volume\n * @type {number}\n * @memberof Metrics\n */\n accumulatedTradingVolume: number;\n /**\n * Accumulated yield volume\n * @type {number}\n * @memberof Metrics\n */\n accumulatedYieldVolume: number;\n /**\n * 24H Yield generated from the vault\n * @type {string}\n * @memberof Metrics\n */\n yieldVolume: string;\n}\n\n/**\n * Check if a given object implements the Metrics interface.\n */\nexport function instanceOfMetrics(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"feeVolume\" in value;\n isInstance = isInstance && \"tradingVolume\" in value;\n isInstance = isInstance && \"accumulatedFeeVolume\" in value;\n isInstance = isInstance && \"accumulatedTradingVolume\" in value;\n isInstance = isInstance && \"accumulatedYieldVolume\" in value;\n isInstance = isInstance && \"yieldVolume\" in value;\n\n return isInstance;\n}\n\nexport function MetricsFromJSON(json: any): Metrics {\n return MetricsFromJSONTyped(json, false);\n}\n\nexport function MetricsFromJSONTyped(json: any, ignoreDiscriminator: boolean): Metrics {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'feeVolume': json['fee_volume'],\n 'tradingVolume': json['trading_volume'],\n 'accumulatedFeeVolume': json['accumulated_fee_volume'],\n 'accumulatedTradingVolume': json['accumulated_trading_volume'],\n 'accumulatedYieldVolume': json['accumulated_yield_volume'],\n 'yieldVolume': json['yield_volume'],\n };\n}\n\nexport function MetricsToJSON(value?: Metrics | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'fee_volume': value.feeVolume,\n 'trading_volume': value.tradingVolume,\n 'accumulated_fee_volume': value.accumulatedFeeVolume,\n 'accumulated_trading_volume': value.accumulatedTradingVolume,\n 'accumulated_yield_volume': value.accumulatedYieldVolume,\n 'yield_volume': value.yieldVolume,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * dynamic-amm-keeper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const OrderBy = {\n Asc: 'asc',\n Desc: 'desc'\n} as const;\nexport type OrderBy = typeof OrderBy[keyof typeof OrderBy];\n\n\nexport function OrderByFromJSON(json: any): OrderBy {\n return OrderByFromJSONTyped(json, false);\n}\n\nexport function OrderByFromJSONTyped(json: any, ignoreDiscriminator: boolean): OrderBy {\n return json as OrderBy;\n}\n\nexport function OrderByToJSON(value?: OrderBy | null): any {\n return value as any;\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * dynamic-amm-keeper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * Response for /pools\n * @export\n * @interface PoolResponse\n */\nexport interface PoolResponse {\n /**\n * \n * @type {number}\n * @memberof PoolResponse\n */\n feeVolume: number;\n /**\n * \n * @type {number}\n * @memberof PoolResponse\n */\n tradingVolume: number;\n /**\n * Accumulated fee volume\n * @type {number}\n * @memberof PoolResponse\n */\n accumulatedFeeVolume: number;\n /**\n * Accumulated trading volume\n * @type {number}\n * @memberof PoolResponse\n */\n accumulatedTradingVolume: number;\n /**\n * Accumulated yield volume\n * @type {number}\n * @memberof PoolResponse\n */\n accumulatedYieldVolume: number;\n /**\n * 24H Yield generated from the vault\n * @type {string}\n * @memberof PoolResponse\n */\n yieldVolume: string;\n /**\n * \n * @type {number}\n * @memberof PoolResponse\n */\n createdAt: number;\n /**\n * \n * @type {string}\n * @memberof PoolResponse\n */\n dailyBaseApy: string;\n /**\n * \n * @type {boolean}\n * @memberof PoolResponse\n */\n farmExpire: boolean;\n /**\n * \n * @type {boolean}\n * @memberof PoolResponse\n */\n farmNew: boolean;\n /**\n * \n * @type {number}\n * @memberof PoolResponse\n */\n farmOrder: number;\n /**\n * \n * @type {number}\n * @memberof PoolResponse\n */\n farmRewardDurationEnd: number;\n /**\n * \n * @type {string}\n * @memberof PoolResponse\n */\n farmTvl: string;\n /**\n * \n * @type {string}\n * @memberof PoolResponse\n */\n farmingApy: string;\n /**\n * \n * @type {string}\n * @memberof PoolResponse\n */\n farmingPool?: string | null;\n /**\n * \n * @type {boolean}\n * @memberof PoolResponse\n */\n isForex: boolean;\n /**\n * \n * @type {boolean}\n * @memberof PoolResponse\n */\n isLst: boolean;\n /**\n * \n * @type {boolean}\n * @memberof PoolResponse\n */\n isMonitoring: boolean;\n /**\n * \n * @type {number}\n * @memberof PoolResponse\n */\n lpDecimal: number;\n /**\n * \n * @type {string}\n * @memberof PoolResponse\n */\n lpMint: string;\n /**\n * \n * @type {boolean}\n * @memberof PoolResponse\n */\n permissioned: boolean;\n /**\n * \n * @type {string}\n * @memberof PoolResponse\n */\n poolAddress: string;\n /**\n * \n * @type {string}\n * @memberof PoolResponse\n */\n poolLpPriceInUsd: string;\n /**\n * \n * @type {string}\n * @memberof PoolResponse\n */\n poolName: string;\n /**\n * \n * @type {number}\n * @memberof PoolResponse\n */\n poolOrder: number;\n /**\n * \n * @type {Array<string>}\n * @memberof PoolResponse\n */\n poolTokenAmounts: Array<string>;\n /**\n * \n * @type {Array<string>}\n * @memberof PoolResponse\n */\n poolTokenMints: Array<string>;\n /**\n * \n * @type {Array<string>}\n * @memberof PoolResponse\n */\n poolTokenUsdAmounts: Array<string>;\n /**\n * \n * @type {string}\n * @memberof PoolResponse\n */\n poolTvl: string;\n /**\n * \n * @type {number}\n * @memberof PoolResponse\n */\n poolVersion: number;\n /**\n * \n * @type {string}\n * @memberof PoolResponse\n */\n totalFeePct: string;\n /**\n * \n * @type {string}\n * @memberof PoolResponse\n */\n tradeApy: string;\n /**\n * \n * @type {boolean}\n * @memberof PoolResponse\n */\n unknown: boolean;\n /**\n * \n * @type {string}\n * @memberof PoolResponse\n */\n weeklyBaseApy: string;\n /**\n * \n * @type {string}\n * @memberof PoolResponse\n */\n weeklyTradeApy: string;\n}\n\n/**\n * Check if a given object implements the PoolResponse interface.\n */\nexport function instanceOfPoolResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"feeVolume\" in value;\n isInstance = isInstance && \"tradingVolume\" in value;\n isInstance = isInstance && \"accumulatedFeeVolume\" in value;\n isInstance = isInstance && \"accumulatedTradingVolume\" in value;\n isInstance = isInstance && \"accumulatedYieldVolume\" in value;\n isInstance = isInstance && \"yieldVolume\" in value;\n isInstance = isInstance && \"createdAt\" in value;\n isInstance = isInstance && \"dailyBaseApy\" in value;\n isInstance = isInstance && \"farmExpire\" in value;\n isInstance = isInstance && \"farmNew\" in value;\n isInstance = isInstance && \"farmOrder\" in value;\n isInstance = isInstance && \"farmRewardDurationEnd\" in value;\n isInstance = isInstance && \"farmTvl\" in value;\n isInstance = isInstance && \"farmingApy\" in value;\n isInstance = isInstance && \"isForex\" in value;\n isInstance = isInstance && \"isLst\" in value;\n isInstance = isInstance && \"isMonitoring\" in value;\n isInstance = isInstance && \"lpDecimal\" in value;\n isInstance = isInstance && \"lpMint\" in value;\n isInstance = isInstance && \"permissioned\" in value;\n isInstance = isInstance && \"poolAddress\" in value;\n isInstance = isInstance && \"poolLpPriceInUsd\" in value;\n isInstance = isInstance && \"poolName\" in value;\n isInstance = isInstance && \"poolOrder\" in value;\n isInstance = isInstance && \"poolTokenAmounts\" in value;\n isInstance = isInstance && \"poolTokenMints\" in value;\n isInstance = isInstance && \"poolTokenUsdAmounts\" in value;\n isInstance = isInstance && \"poolTvl\" in value;\n isInstance = isInstance && \"poolVersion\" in value;\n isInstance = isInstance && \"totalFeePct\" in value;\n isInstance = isInstance && \"tradeApy\" in value;\n isInstance = isInstance && \"unknown\" in value;\n isInstance = isInstance && \"weeklyBaseApy\" in value;\n isInstance = isInstance && \"weeklyTradeApy\" in value;\n\n return isInstance;\n}\n\nexport function PoolResponseFromJSON(json: any): PoolResponse {\n return PoolResponseFromJSONTyped(json, false);\n}\n\nexport function PoolResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): PoolResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'feeVolume': json['fee_volume'],\n 'tradingVolume': json['trading_volume'],\n 'accumulatedFeeVolume': json['accumulated_fee_volume'],\n 'accumulatedTradingVolume': json['accumulated_trading_volume'],\n 'accumulatedYieldVolume': json['accumulated_yield_volume'],\n 'yieldVolume': json['yield_volume'],\n 'createdAt': json['created_at'],\n 'dailyBaseApy': json['daily_base_apy'],\n 'farmExpire': json['farm_expire'],\n 'farmNew': json['farm_new'],\n 'farmOrder': json['farm_order'],\n 'farmRewardDurationEnd': json['farm_reward_duration_end'],\n 'farmTvl': json['farm_tvl'],\n 'farmingApy': json['farming_apy'],\n 'farmingPool': !exists(json, 'farming_pool') ? undefined : json['farming_pool'],\n 'isForex': json['is_forex'],\n 'isLst': json['is_lst'],\n 'isMonitoring': json['is_monitoring'],\n 'lpDecimal': json['lp_decimal'],\n 'lpMint': json['lp_mint'],\n 'permissioned': json['permissioned'],\n 'poolAddress': json['pool_address'],\n 'poolLpPriceInUsd': json['pool_lp_price_in_usd'],\n 'poolName': json['pool_name'],\n 'poolOrder': json['pool_order'],\n 'poolTokenAmounts': json['pool_token_amounts'],\n 'poolTokenMints': json['pool_token_mints'],\n 'poolTokenUsdAmounts': json['pool_token_usd_amounts'],\n 'poolTvl': json['pool_tvl'],\n 'poolVersion': json['pool_version'],\n 'totalFeePct': json['total_fee_pct'],\n 'tradeApy': json['trade_apy'],\n 'unknown': json['unknown'],\n 'weeklyBaseApy': json['weekly_base_apy'],\n 'weeklyTradeApy': json['weekly_trade_apy'],\n };\n}\n\nexport function PoolResponseToJSON(value?: PoolResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'fee_volume': value.feeVolume,\n 'trading_volume': value.tradingVolume,\n 'accumulated_fee_volume': value.accumulatedFeeVolume,\n 'accumulated_trading_volume': value.accumulatedTradingVolume,\n 'accumulated_yield_volume': value.accumulatedYieldVolume,\n 'yield_volume': value.yieldVolume,\n 'created_at': value.createdAt,\n 'daily_base_apy': value.dailyBaseApy,\n 'farm_expire': value.farmExpire,\n 'farm_new': value.farmNew,\n 'farm_order': value.farmOrder,\n 'farm_reward_duration_end': value.farmRewardDurationEnd,\n 'farm_tvl': value.farmTvl,\n 'farming_apy': value.farmingApy,\n 'farming_pool': value.farmingPool,\n 'is_forex': value.isForex,\n 'is_lst': value.isLst,\n 'is_monitoring': value.isMonitoring,\n 'lp_decimal': value.lpDecimal,\n 'lp_mint': value.lpMint,\n 'permissioned': value.permissioned,\n 'pool_address': value.poolAddress,\n 'pool_lp_price_in_usd': value.poolLpPriceInUsd,\n 'pool_name': value.poolName,\n 'pool_order': value.poolOrder,\n 'pool_token_amounts': value.poolTokenAmounts,\n 'pool_token_mints': value.poolTokenMints,\n 'pool_token_usd_amounts': value.poolTokenUsdAmounts,\n 'pool_tvl': value.poolTvl,\n 'pool_version': value.poolVersion,\n 'total_fee_pct': value.totalFeePct,\n 'trade_apy': value.tradeApy,\n 'unknown': value.unknown,\n 'weekly_base_apy': value.weeklyBaseApy,\n 'weekly_trade_apy': value.weeklyTradeApy,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * dynamic-amm-keeper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { PoolResponse } from './PoolResponse';\nimport {\n PoolResponseFromJSON,\n PoolResponseFromJSONTyped,\n PoolResponseToJSON,\n} from './PoolResponse';\n\n/**\n * \n * @export\n * @interface PaginatedPoolResponse\n */\nexport interface PaginatedPoolResponse {\n /**\n * \n * @type {PoolResponse}\n * @memberof PaginatedPoolResponse\n */\n data: PoolResponse;\n /**\n * \n * @type {number}\n * @memberof PaginatedPoolResponse\n */\n page: number;\n /**\n * \n * @type {number}\n * @memberof PaginatedPoolResponse\n */\n totalCount: number;\n}\n\n/**\n * Check if a given object implements the PaginatedPoolResponse interface.\n */\nexport function instanceOfPaginatedPoolResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"data\" in value;\n isInstance = isInstance && \"page\" in value;\n isInstance = isInstance && \"totalCount\" in value;\n\n return isInstance;\n}\n\nexport function PaginatedPoolResponseFromJSON(json: any): PaginatedPoolResponse {\n return PaginatedPoolResponseFromJSONTyped(json, false);\n}\n\nexport function PaginatedPoolResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginatedPoolResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'data': PoolResponseFromJSON(json['data']),\n 'page': json['page'],\n 'totalCount': json['total_count'],\n };\n}\n\nexport function PaginatedPoolResponseToJSON(value?: PaginatedPoolResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'data': PoolResponseToJSON(value.data),\n 'page': value.page,\n 'total_count': value.totalCount,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * dynamic-amm-keeper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface PoolConfigResponse\n */\nexport interface PoolConfigResponse {\n /**\n * \n * @type {number}\n * @memberof PoolConfigResponse\n */\n activationDuration: number;\n /**\n * \n * @type {number}\n * @memberof PoolConfigResponse\n */\n activationType: number;\n /**\n * \n * @type {string}\n * @memberof PoolConfigResponse\n */\n configAddress: string;\n /**\n * \n * @type {string}\n * @memberof PoolConfigResponse\n */\n poolCreatorAuthority: string;\n /**\n * \n * @type {number}\n * @memberof PoolConfigResponse\n */\n protocolFeeBps: number;\n /**\n * \n * @type {number}\n * @memberof PoolConfigResponse\n */\n tradeFeeBps: number;\n /**\n * \n * @type {string}\n * @memberof PoolConfigResponse\n */\n vaultConfigKey: string;\n}\n\n/**\n * Check if a given object implements the PoolConfigResponse interface.\n */\nexport function instanceOfPoolConfigResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"activationDuration\" in value;\n isInstance = isInstance && \"activationType\" in value;\n isInstance = isInstance && \"configAddress\" in value;\n isInstance = isInstance && \"poolCreatorAuthority\" in value;\n isInstance = isInstance && \"protocolFeeBps\" in value;\n isInstance = isInstance && \"tradeFeeBps\" in value;\n isInstance = isInstance && \"vaultConfigKey\" in value;\n\n return isInstance;\n}\n\nexport function PoolConfigResponseFromJSON(json: any): PoolConfigResponse {\n return PoolConfigResponseFromJSONTyped(json, false);\n}\n\nexport function PoolConfigResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): PoolConfigResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'activationDuration': json['activation_duration'],\n 'activationType': json['activation_type'],\n 'configAddress': json['config_address'],\n 'poolCreatorAuthority': json['pool_creator_authority'],\n 'protocolFeeBps': json['protocol_fee_bps'],\n 'tradeFeeBps': json['trade_fee_bps'],\n 'vaultConfigKey': json['vault_config_key'],\n };\n}\n\nexport function PoolConfigResponseToJSON(value?: PoolConfigResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'activation_duration': value.activationDuration,\n 'activation_type': value.activationType,\n 'config_address': value.configAddress,\n 'pool_creator_authority': value.poolCreatorAuthority,\n 'protocol_fee_bps': value.protocolFeeBps,\n 'trade_fee_bps': value.tradeFeeBps,\n 'vault_config_key': value.vaultConfigKey,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * dynamic-amm-keeper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface PoolPostRequest\n */\nexport interface PoolPostRequest {\n /**\n * \n * @type {Array<string>}\n * @memberof PoolPostRequest\n */\n address: Array<string>;\n}\n\n/**\n * Check if a given object implements the PoolPostRequest interface.\n */\nexport function instanceOfPoolPostRequest(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"address\" in value;\n\n return isInstance;\n}\n\nexport function PoolPostRequestFromJSON(json: any): PoolPostRequest {\n return PoolPostRequestFromJSONTyped(json, false);\n}\n\nexport function PoolPostRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): PoolPostRequest {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'address': json['address'],\n };\n}\n\nexport function PoolPostRequestToJSON(value?: PoolPostRequest | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'address': value.address,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * dynamic-amm-keeper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const PoolSortKey = {\n Tvl: 'tvl',\n Volume: 'volume',\n FeeTvlRatio: 'fee_tvl_ratio',\n LM: 'l_m'\n} as const;\nexport type PoolSortKey = typeof PoolSortKey[keyof typeof PoolSortKey];\n\n\nexport function PoolSortKeyFromJSON(json: any): PoolSortKey {\n return PoolSortKeyFromJSONTyped(json, false);\n}\n\nexport function PoolSortKeyFromJSONTyped(json: any, ignoreDiscriminator: boolean): PoolSortKey {\n return json as PoolSortKey;\n}\n\nexport function PoolSortKeyToJSON(value?: PoolSortKey | null): any {\n return value as any;\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * dynamic-amm-keeper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const PoolTypeQueryParam = {\n Dynamic: 'dynamic',\n Multitoken: 'multitoken',\n Lst: 'lst',\n Farms: 'farms'\n} as const;\nexport type PoolTypeQueryParam = typeof PoolTypeQueryParam[keyof typeof PoolTypeQueryParam];\n\n\nexport function PoolTypeQueryParamFromJSON(json: any): PoolTypeQueryParam {\n return PoolTypeQueryParamFromJSONTyped(json, false);\n}\n\nexport function PoolTypeQueryParamFromJSONTyped(json: any, ignoreDiscriminator: boolean): PoolTypeQueryParam {\n return json as PoolTypeQueryParam;\n}\n\nexport function PoolTypeQueryParamToJSON(value?: PoolTypeQueryParam | null): any {\n return value as any;\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * dynamic-amm-keeper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface SwapMetrics\n */\nexport interface SwapMetrics {\n /**\n * \n * @type {number}\n * @memberof SwapMetrics\n */\n feeVolume: number;\n /**\n * \n * @type {number}\n * @memberof SwapMetrics\n */\n tradingVolume: number;\n}\n\n/**\n * Check if a given object implements the SwapMetrics interface.\n */\nexport function instanceOfSwapMetrics(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"feeVolume\" in value;\n isInstance = isInstance && \"tradingVolume\" in value;\n\n return isInstance;\n}\n\nexport function SwapMetricsFromJSON(json: any): SwapMetrics {\n return SwapMetricsFromJSONTyped(json, false);\n}\n\nexport function SwapMetricsFromJSONTyped(json: any, ignoreDiscriminator: boolean): SwapMetrics {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'feeVolume': json['fee_volume'],\n 'tradingVolume': json['trading_volume'],\n };\n}\n\nexport function SwapMetricsToJSON(value?: SwapMetrics | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'fee_volume': value.feeVolume,\n 'trading_volume': value.tradingVolume,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * dynamic-amm-keeper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n AlphaVaultResponse,\n AlphaVaultVaultConfigResponse,\n} from '../models/index';\nimport {\n AlphaVaultResponseFromJSON,\n AlphaVaultResponseToJSON,\n AlphaVaultVaultConfigResponseFromJSON,\n AlphaVaultVaultConfigResponseToJSON,\n} from '../models/index';\n\nexport interface GetVaultsRequest {\n vaultAddress?: Array<string> | null;\n poolAddress?: Array<string> | null;\n baseMint?: Array<string> | null;\n}\n\n/**\n * \n */\nexport class AlphaVaultApi extends runtime.BaseAPI {\n\n /**\n * Alpha Vault Configs\n */\n async getAllRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<AlphaVaultVaultConfigResponse>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/alpha-vault-configs`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => AlphaVaultVaultConfigResponseFromJSON(jsonValue));\n }\n\n /**\n * Alpha Vault Configs\n */\n async getAll(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AlphaVaultVaultConfigResponse> {\n const response = await this.getAllRaw(initOverrides);\n return await response.value();\n }\n\n /**\n * Alpha Vaults\n */\n async getVaultsRaw(requestParameters: GetVaultsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<AlphaVaultResponse>>> {\n const queryParameters: any = {};\n\n if (requestParameters.vaultAddress) {\n queryParameters['vault_address'] = requestParameters.vaultAddress;\n }\n\n if (requestParameters.poolAddress) {\n queryParameters['pool_address'] = requestParameters.poolAddress;\n }\n\n if (requestParameters.baseMint) {\n queryParameters['base_mint'] = requestParameters.baseMint;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/alpha-vault`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(AlphaVaultResponseFromJSON));\n }\n\n /**\n * Alpha Vaults\n */\n async getVaults(requestParameters: GetVaultsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<AlphaVaultResponse>> {\n const response = await this.getVaultsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * dynamic-amm-keeper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n FeeConfigResponse,\n} from '../models/index';\nimport {\n FeeConfigResponseFromJSON,\n FeeConfigResponseToJSON,\n} from '../models/index';\n\nexport interface GetConfigAssociatedFeeConfigsRequest {\n configAddress: string;\n}\n\n/**\n * \n */\nexport class FeeConfigsApi extends runtime.BaseAPI {\n\n /**\n * Fee Configs\n */\n async getConfigAssociatedFeeConfigsRaw(requestParameters: GetConfigAssociatedFeeConfigsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<FeeConfigResponse>>> {\n if (requestParameters.configAddress === null || requestParameters.configAddress === undefined) {\n throw new runtime.RequiredError('configAddress','Required parameter requestParameters.configAddress was null or undefined when calling getConfigAssociatedFeeConfigs.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/fee-config/{config_address}`.replace(`{${\"config_address\"}}`, encodeURIComponent(String(requestParameters.configAddress))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(FeeConfigResponseFromJSON));\n }\n\n /**\n * Fee Configs\n */\n async getConfigAssociatedFeeConfigs(requestParameters: GetConfigAssociatedFeeConfigsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<FeeConfigResponse>> {\n const response = await this.getConfigAssociatedFeeConfigsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * dynamic-amm-keeper\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n AggregatePoolsMetrics,\n OrderBy,\n PaginatedPoolResponse,\n PoolConfigResponse,\n PoolPostRequest,\n PoolResponse,\n PoolSortKey,\n PoolTypeQueryParam,\n} from '../models/index';\nimport {\n AggregatePoolsMetricsFromJSON,\n AggregatePoolsMetricsToJSON,\n OrderByFromJSON,\n OrderByToJSON,\n PaginatedPoolResponseFromJSON,\n PaginatedPoolResponseToJSON,\n PoolConfigResponseFromJSON,\n PoolConfigResponseToJSON,\n PoolPostRequestFromJSON,\n PoolPostRequestToJSON,\n PoolResponseFromJSON,\n PoolResponseToJSON,\n PoolSortKeyFromJSON,\n PoolSortKeyToJSON,\n PoolTypeQueryParamFromJSON,\n PoolTypeQueryParamToJSON,\n} from '../models/index';\n\nexport interface FilterAndGetPoolInfoRequest {\n page: number;\n size: number;\n filter?: string | null;\n sortKey?: PoolSortKey | null;\n orderBy?: OrderBy | null;\n poolsToTop?: Array<string>;\n unknown?: boolean | null;\n poolType?: PoolTypeQueryParam | null;\n isMonitoring?: boolean | null;\n hideLowTvl?: number | null;\n hideLowApr?: boolean | null;\n includeTokenMints?: Array<string> | null;\n includePoolTokenPairs?: Array<string> | null;\n launchpad?: Array<string> | null;\n}\n\nexport interface FilterAndGetPoolInfoDeprecatedRequest {\n page: number;\n size: number;\n version: string;\n filter?: string | null;\n sortKey?: PoolSortKey | null;\n orderBy?: OrderBy | null;\n poolsToTop?: Array<string>;\n unknown?: boolean | null;\n poolType?: PoolTypeQueryParam | null;\n isMonitoring?: boolean | null;\n hideLowTvl?: number | null;\n hideLowApr?: boolean | null;\n includeTokenMints?: Array<string> | null;\n includePoolTokenPairs?: Array<string> | null;\n launchpad?: Array<string> | null;\n}\n\nexport interface GetPoolsRequest {\n address?: Array<string>;\n unknown?: boolean | null;\n poolType?: PoolTypeQueryParam | null;\n isMonitoring?: boolean | null;\n hideLowTvl?: number | null;\n hideLowApr?: boolean | null;\n launchpad?: Array<string> | null;\n}\n\nexport interface GetPoolsByAVaultLpRequest {\n poolPostRequest: PoolPostRequest;\n}\n\n/**\n * \n */\nexport class PoolsApi extends runtime.BaseAPI {\n\n /**\n * Pool Search\n */\n async filterAndGetPoolInfoRaw(requestParameters: FilterAndGetPoolInfoRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PaginatedPoolResponse>> {\n if (requestParameters.page === null || requestParameters.page === undefined) {\n throw new runtime.RequiredError('page','Required parameter requestParameters.page was null or undefined when calling filterAndGetPoolInfo.');\n }\n\n if (requestParameters.size === null || requestParameters.size === undefined) {\n throw new runtime.RequiredError('size','Required parameter requestParameters.size was null or undefined when calling filterAndGetPoolInfo.');\n }\n\n const queryParameters: any = {};\n\n if (requestParameters.page !== undefined) {\n queryParameters['page'] = requestParameters.page;\n }\n\n if (requestParameters.size !== undefined) {\n queryParameters['size'] = requestParameters.size;\n }\n\n if (requestParameters.filter !== undefined) {\n queryParameters['filter'] = requestParameters.filter;\n }\n\n if (requestParameters.sortKey !== undefined) {\n queryParameters['sort_key'] = requestParameters.sortKey;\n }\n\n if (requestParameters.orderBy !== undefined) {\n queryParameters['order_by'] = requestParameters.orderBy;\n }\n\n if (requestParameters.poolsToTop) {\n queryParameters['pools_to_top'] = requestParameters.poolsToTop;\n }\n\n if (requestParameters.unknown !== undefined) {\n queryParameters['unknown'] = requestParameters.unknown;\n }\n\n if (requestParameters.poolType !== undefined) {\n queryParameters['pool_type'] = requestParameters.poolType;\n }\n\n if (requestParameters.isMonitoring !== undefined) {\n queryParameters['is_monitoring'] = requestParameters.isMonitoring;\n }\n\n if (requestParameters.hideLowTvl !== undefined) {\n queryParameters['hide_low_tvl'] = requestParameters.hideLowTvl;\n }\n\n if (requestParameters.hideLowApr !== undefined) {\n queryParameters['hide_low_apr'] = requestParameters.hideLowApr;\n }\n\n if (requestParameters.includeTokenMints) {\n queryParameters['include_token_mints'] = requestParameters.includeTokenMints;\n }\n\n if (requestParameters.includePoolTokenPairs) {\n queryParameters['include_pool_token_pairs'] = requestParameters.includePoolTokenPairs;\n }\n\n if (requestParameters.launchpad) {\n queryParameters['launchpad'] = requestParameters.launchpad;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/pools/search`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PaginatedPoolResponseFromJSON(jsonValue));\n }\n\n /**\n * Pool Search\n */\n async filterAndGetPoolInfo(requestParameters: FilterAndGetPoolInfoRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PaginatedPoolResponse> {\n const response = await this.filterAndGetPoolInfoRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Pool Search Deprecated\n */\n async filterAndGetPoolInfoDeprecatedRaw(requestParameters: FilterAndGetPoolInfoDeprecatedRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PaginatedPoolResponse>> {\n if (requestParameters.page === null || requestParameters.page === undefined) {\n throw new runtime.RequiredError('page','Required parameter requestParameters.page was null or undefined when calling filterAndGetPoolInfoDeprecated.');\n }\n\n if (requestParameters.size === null || requestParameters.size === undefined) {\n throw new runtime.RequiredError('size','Required parameter requestParameters.size was null or undefined when calling filterAndGetPoolInfoDeprecated.');\n }\n\n if (requestParameters.version === null || requestParameters.version === undefined) {\n throw new runtime.RequiredError('version','Required parameter requestParameters.version was null or undefined when calling filterAndGetPoolInfoDeprecated.');\n }\n\n const queryParameters: any = {};\n\n if (requestParameters.page !== undefined) {\n queryParameters['page'] = requestParameters.page;\n }\n\n if (requestParameters.size !== undefined) {\n queryParameters['size'] = requestParameters.size;\n }\n\n if (requestParameters.filter !== undefined) {\n queryParameters['filter'] = requestParameters.filter;\n }\n\n if (requestParameters.sortKey !== undefined) {\n queryParameters['sort_key'] = requestParameters.sortKey;\n }\n\n if (requestParameters.orderBy !== undefined) {\n queryParameters['order_by'] = requestParameters.orderBy;\n }\n\n if (requestParameters.poolsToTop) {\n queryParameters['pools_to_top'] = requestParameters.poolsToTop;\n }\n\n if (requestParameters.unknown !== undefined) {\n queryParameters['unknown'] = requestParameters.unknown;\n }\n\n if (requestParameters.poolType !== undefined) {\n queryParameters['pool_type'] = requestParameters.poolType;\n }\n\n if (requestParameters.isMonitoring !== undefined) {\n queryParameters['is_monitoring'] = requestParameters.isMonitoring;\n }\n\n if (requestParameters.hideLowTvl !== undefined) {\n queryParameters['hide_low_tvl'] = requestParameters.hideLowTvl;\n }\n\n if (requestParameters.hideLowApr !== undefined) {\n queryParameters['hide_low_apr'] = requestParameters.hideLowApr;\n }\n\n if (requestParameters.includeTokenMints) {\n queryParameters['include_token_mints'] = requestParameters.includeTokenMints;\n }\n\n if (requestParameters.includePoolTokenPairs) {\n queryParameters['include_pool_token_pairs'] = requestParameters.includePoolTokenPairs;\n }\n\n if (requestParameters.launchpad) {\n queryParameters['launchpad'] = requestParameters.launchpad;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/pools/{version}`.replace(`{${\"version\"}}`, encodeURIComponent(String(requestParameters.version))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PaginatedPoolResponseFromJSON(jsonValue));\n }\n\n /**\n * Pool Search Deprecated\n */\n async filterAndGetPoolInfoDeprecated(requestParameters: FilterAndGetPoolInfoDeprecatedRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PaginatedPoolResponse> {\n const response = await this.filterAndGetPoolInfoDeprecatedRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Pool Configs\n */\n async getAllPoolConfigsRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<PoolConfigResponse>>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/pool-configs`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(PoolConfigResponseFromJSON));\n }\n\n /**\n * Pool Configs\n */\n async getAllPoolConfigs(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<PoolConfigResponse>> {\n const response = await this.getAllPoolConfigsRaw(initOverrides);\n return await response.value();\n }\n\n /**\n * Pools\n */\n async getPoolsRaw(requestParameters: GetPoolsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<PoolResponse>>> {\n const queryParameters: any = {};\n\n if (requestParameters.address) {\n queryParameters['address'] = requestParameters.address;\n }\n\n if (requestParameters.unknown !== undefined) {\n queryParameters['unknown'] = requestParameters.unknown;\n }\n\n if (requestParameters.poolType !== undefined) {\n queryParameters['pool_type'] = requestParameters.poolType;\n }\n\n if (requestParameters.isMonitoring !== undefined) {\n queryParameters['is_monitoring'] = requestParameters.isMonitoring;\n }\n\n if (requestParameters.hideLowTvl !== undefined) {\n queryParameters['hide_low_tvl'] = requestParameters.hideLowTvl;\n }\n\n if (requestParameters.hideLowApr !== undefined) {\n queryParameters['hide_low_apr'] = requestParameters.hideLowApr;\n }\n\n if (requestParameters.launchpad) {\n queryParameters['launchpad'] = requestParameters.launchpad;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/pools`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(PoolResponseFromJSON));\n }\n\n /**\n * Pools\n */\n async getPools(requestParameters: GetPoolsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<PoolResponse>> {\n const response = await this.getPoolsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Pools By A Vault LP\n */\n async getPoolsByAVaultLpRaw(requestParameters: GetPoolsByAVaultLpRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<PoolResponse>>> {\n if (requestParameters.poolPostRequest === null || requestParameters.poolPostRequest === undefined) {\n throw new runtime.RequiredError('poolPostRequest','Required parameter requestParameters.poolPostRequest was null or undefined when calling getPoolsByAVaultLp.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n headerParameters['Content-Type'] = 'application/json';\n\n const response = await this.request({\n path: `/pools_by_a_vault_lp`,\n method: 'POST',\n headers: headerParameters,\n query: queryParameters,\n body: PoolPostRequestToJSON(requestParameters.poolPostRequest),\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(PoolResponseFromJSON));\n }\n\n /**\n * Pools By A Vault LP\n */\n async getPoolsByAVaultLp(requestParameters: GetPoolsByAVaultLpRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<PoolResponse>> {\n const response = await this.getPoolsByAVaultLpRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Pool Metrics\n */\n async getPoolsMetricsRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<AggregatePoolsMetrics>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/pools-metrics`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => AggregatePoolsMetricsFromJSON(jsonValue));\n }\n\n /**\n * Pool Metrics\n */\n async getPoolsMetrics(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AggregatePoolsMetrics> {\n const response = await this.getPoolsMetricsRaw(initOverrides);\n return await response.value();\n }\n\n /**\n * Pools With Farms\n */\n async getPoolsWithFarmRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<PoolResponse>>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/farms`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(PoolResponseFromJSON));\n }\n\n /**\n * Pools With Farms\n */\n async getPoolsWithFarm(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<PoolResponse>> {\n const response = await this.getPoolsWithFarmRaw(initOverrides);\n return await response.value();\n }\n\n}\n","export interface ApiClientOptions {\n /** Override the product API's default base URL. */\n baseUrl?: string;\n /** Fetch implementation used by every generated API in this client. */\n fetch?: (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;\n /** Headers sent with every request made by this client. */\n headers?: Record<string, string>;\n}\n\nexport function resolveBaseUrl(options: ApiClientOptions, defaultBaseUrl: string): string {\n const baseUrl = options.baseUrl ?? defaultBaseUrl;\n\n if (baseUrl.trim().length === 0) {\n throw new TypeError(\"baseUrl must not be blank\");\n }\n\n return baseUrl;\n}\n","import { AlphaVaultApi, FeeConfigsApi, PoolsApi } from \"../../generated/ts/damm-v1/apis\";\nimport { Configuration } from \"../../generated/ts/damm-v1/runtime\";\nimport { type ApiClientOptions, resolveBaseUrl } from \"./config\";\n\nexport type DammV1ApiOptions = ApiClientOptions;\n\nexport class DammV1Api {\n public readonly alphaVault: AlphaVaultApi;\n public readonly feeConfigs: FeeConfigsApi;\n public readonly pools: PoolsApi;\n\n public constructor(options: DammV1ApiOptions = {}) {\n const configuration = new Configuration({\n basePath: resolveBaseUrl(options, \"https://damm-api.meteora.ag\"),\n fetchApi: options.fetch,\n headers: options.headers,\n });\n\n this.alphaVault = new AlphaVaultApi(configuration);\n this.feeConfigs = new FeeConfigsApi(configuration);\n this.pools = new PoolsApi(configuration);\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport const BASE_PATH = \"https://damm-v2.datapi.meteora.ag\".replace(/\\/+$/, \"\");\n\nexport interface ConfigurationParameters {\n basePath?: string; // override base path\n fetchApi?: FetchAPI; // override for fetch implementation\n middleware?: Middleware[]; // middleware to apply before/after fetch requests\n queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings\n username?: string; // parameter for basic security\n password?: string; // parameter for basic security\n apiKey?: string | Promise<string> | ((name: string) => string | Promise<string>); // parameter for apiKey security\n accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string | Promise<string>); // parameter for oauth2 security\n headers?: HTTPHeaders; //header params we want to use on every request\n credentials?: RequestCredentials; //value for the credentials param we want to use on each request\n}\n\nexport class Configuration {\n constructor(private configuration: ConfigurationParameters = {}) {}\n\n set config(configuration: Configuration) {\n this.configuration = configuration;\n }\n\n get basePath(): string {\n return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH;\n }\n\n get fetchApi(): FetchAPI | undefined {\n return this.configuration.fetchApi;\n }\n\n get middleware(): Middleware[] {\n return this.configuration.middleware || [];\n }\n\n get queryParamsStringify(): (params: HTTPQuery) => string {\n return this.configuration.queryParamsStringify || querystring;\n }\n\n get username(): string | undefined {\n return this.configuration.username;\n }\n\n get password(): string | undefined {\n return this.configuration.password;\n }\n\n get apiKey(): ((name: string) => string | Promise<string>) | undefined {\n const apiKey = this.configuration.apiKey;\n if (apiKey) {\n return typeof apiKey === 'function' ? apiKey : () => apiKey;\n }\n return undefined;\n }\n\n get accessToken(): ((name?: string, scopes?: string[]) => string | Promise<string>) | undefined {\n const accessToken = this.configuration.accessToken;\n if (accessToken) {\n return typeof accessToken === 'function' ? accessToken : async () => accessToken;\n }\n return undefined;\n }\n\n get headers(): HTTPHeaders | undefined {\n return this.configuration.headers;\n }\n\n get credentials(): RequestCredentials | undefined {\n return this.configuration.credentials;\n }\n}\n\nexport const DefaultConfig = new Configuration();\n\n/**\n * This is the base class for all generated API classes.\n */\nexport class BaseAPI {\n\n private static readonly jsonRegex = new RegExp('^(:?application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(:?;.*)?$', 'i');\n private middleware: Middleware[];\n\n constructor(protected configuration = DefaultConfig) {\n this.middleware = configuration.middleware;\n }\n\n withMiddleware<T extends BaseAPI>(this: T, ...middlewares: Middleware[]) {\n const next = this.clone<T>();\n next.middleware = next.middleware.concat(...middlewares);\n return next;\n }\n\n withPreMiddleware<T extends BaseAPI>(this: T, ...preMiddlewares: Array<Middleware['pre']>) {\n const middlewares = preMiddlewares.map((pre) => ({ pre }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n withPostMiddleware<T extends BaseAPI>(this: T, ...postMiddlewares: Array<Middleware['post']>) {\n const middlewares = postMiddlewares.map((post) => ({ post }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n /**\n * Check if the given MIME is a JSON MIME.\n * JSON MIME examples:\n * application/json\n * application/json; charset=UTF8\n * APPLICATION/JSON\n * application/vnd.company+json\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\n * @return True if the given MIME is JSON, false otherwise.\n */\n protected isJsonMime(mime: string | null | undefined): boolean {\n if (!mime) {\n return false;\n }\n return BaseAPI.jsonRegex.test(mime);\n }\n\n protected async request(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction): Promise<Response> {\n const { url, init } = await this.createFetchParams(context, initOverrides);\n const response = await this.fetchApi(url, init);\n if (response && (response.status >= 200 && response.status < 300)) {\n return response;\n }\n throw new ResponseError(response, 'Response returned an error code');\n }\n\n private async createFetchParams(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction) {\n let url = this.configuration.basePath + context.path;\n if (context.query !== undefined && Object.keys(context.query).length !== 0) {\n // only add the querystring to the URL if there are query parameters.\n // this is done to avoid urls ending with a \"?\" character which buggy webservers\n // do not handle correctly sometimes.\n url += '?' + this.configuration.queryParamsStringify(context.query);\n }\n\n const headers = Object.assign({}, this.configuration.headers, context.headers);\n Object.keys(headers).forEach(key => headers[key] === undefined ? delete headers[key] : {});\n\n const initOverrideFn =\n typeof initOverrides === \"function\"\n ? initOverrides\n : async () => initOverrides;\n\n const initParams = {\n method: context.method,\n headers,\n body: context.body,\n credentials: this.configuration.credentials,\n };\n\n const overriddenInit: RequestInit = {\n ...initParams,\n ...(await initOverrideFn({\n init: initParams,\n context,\n }))\n };\n\n let body: any;\n if (isFormData(overriddenInit.body)\n || (overriddenInit.body instanceof URLSearchParams)\n || isBlob(overriddenInit.body)) {\n body = overriddenInit.body;\n } else if (this.isJsonMime(headers['Content-Type'])) {\n body = JSON.stringify(overriddenInit.body);\n } else {\n body = overriddenInit.body;\n }\n\n const init: RequestInit = {\n ...overriddenInit,\n body\n };\n\n return { url, init };\n }\n\n private fetchApi = async (url: string, init: RequestInit) => {\n let fetchParams = { url, init };\n for (const middleware of this.middleware) {\n if (middleware.pre) {\n fetchParams = await middleware.pre({\n fetch: this.fetchApi,\n ...fetchParams,\n }) || fetchParams;\n }\n }\n let response: Response | undefined = undefined;\n try {\n response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init);\n } catch (e) {\n for (const middleware of this.middleware) {\n if (middleware.onError) {\n response = await middleware.onError({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n error: e,\n response: response ? response.clone() : undefined,\n }) || response;\n }\n }\n if (response === undefined) {\n if (e instanceof Error) {\n throw new FetchError(e, 'The request failed and the interceptors did not return an alternative response');\n } else {\n throw e;\n }\n }\n }\n for (const middleware of this.middleware) {\n if (middleware.post) {\n response = await middleware.post({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n response: response.clone(),\n }) || response;\n }\n }\n return response;\n }\n\n /**\n * Create a shallow clone of `this` by constructing a new instance\n * and then shallow cloning data members.\n */\n private clone<T extends BaseAPI>(this: T): T {\n const constructor = this.constructor as any;\n const next = new constructor(this.configuration);\n next.middleware = this.middleware.slice();\n return next;\n }\n};\n\nfunction isBlob(value: any): value is Blob {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n\nfunction isFormData(value: any): value is FormData {\n return typeof FormData !== \"undefined\" && value instanceof FormData;\n}\n\nexport class ResponseError extends Error {\n override name: \"ResponseError\" = \"ResponseError\";\n constructor(public response: Response, msg?: string) {\n super(msg);\n }\n}\n\nexport class FetchError extends Error {\n override name: \"FetchError\" = \"FetchError\";\n constructor(public cause: Error, msg?: string) {\n super(msg);\n }\n}\n\nexport class RequiredError extends Error {\n override name: \"RequiredError\" = \"RequiredError\";\n constructor(public field: string, msg?: string) {\n super(msg);\n }\n}\n\nexport const COLLECTION_FORMATS = {\n csv: \",\",\n ssv: \" \",\n tsv: \"\\t\",\n pipes: \"|\",\n};\n\nexport type FetchAPI = WindowOrWorkerGlobalScope['fetch'];\n\nexport type Json = any;\nexport type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD';\nexport type HTTPHeaders = { [key: string]: string };\nexport type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery };\nexport type HTTPBody = Json | FormData | URLSearchParams;\nexport type HTTPRequestInit = { headers?: HTTPHeaders; method: HTTPMethod; credentials?: RequestCredentials; body?: HTTPBody };\nexport type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';\n\nexport type InitOverrideFunction = (requestContext: { init: HTTPRequestInit, context: RequestOpts }) => Promise<RequestInit>\n\nexport interface FetchParams {\n url: string;\n init: RequestInit;\n}\n\nexport interface RequestOpts {\n path: string;\n method: HTTPMethod;\n headers: HTTPHeaders;\n query?: HTTPQuery;\n body?: HTTPBody;\n}\n\nexport function exists(json: any, key: string) {\n const value = json[key];\n return value !== null && value !== undefined;\n}\n\nexport function querystring(params: HTTPQuery, prefix: string = ''): string {\n return Object.keys(params)\n .map(key => querystringSingleKey(key, params[key], prefix))\n .filter(part => part.length > 0)\n .join('&');\n}\n\nfunction querystringSingleKey(key: string, value: string | number | null | undefined | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery, keyPrefix: string = ''): string {\n const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key);\n if (value instanceof Array) {\n const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue)))\n .join(`&${encodeURIComponent(fullKey)}=`);\n return `${encodeURIComponent(fullKey)}=${multiValue}`;\n }\n if (value instanceof Set) {\n const valueAsArray = Array.from(value);\n return querystringSingleKey(key, valueAsArray, keyPrefix);\n }\n if (value instanceof Date) {\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`;\n }\n if (value instanceof Object) {\n return querystring(value as HTTPQuery, fullKey);\n }\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`;\n}\n\nexport function mapValues(data: any, fn: (item: any) => any) {\n return Object.keys(data).reduce(\n (acc, key) => ({ ...acc, [key]: fn(data[key]) }),\n {}\n );\n}\n\nexport function canConsumeForm(consumes: Consume[]): boolean {\n for (const consume of consumes) {\n if ('multipart/form-data' === consume.contentType) {\n return true;\n }\n }\n return false;\n}\n\nexport interface Consume {\n contentType: string;\n}\n\nexport interface RequestContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n}\n\nexport interface ResponseContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n response: Response;\n}\n\nexport interface ErrorContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n error: unknown;\n response?: Response;\n}\n\nexport interface Middleware {\n pre?(context: RequestContext): Promise<FetchParams | void>;\n post?(context: ResponseContext): Promise<Response | void>;\n onError?(context: ErrorContext): Promise<Response | void>;\n}\n\nexport interface ApiResponse<T> {\n raw: Response;\n value(): Promise<T>;\n}\n\nexport interface ResponseTransformer<T> {\n (json: any): T;\n}\n\nexport class JSONApiResponse<T> {\n constructor(public raw: Response, private transformer: ResponseTransformer<T> = (jsonValue: any) => jsonValue) {}\n\n async value(): Promise<T> {\n return this.transformer(await this.raw.json());\n }\n}\n\nexport class VoidApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<void> {\n return undefined;\n }\n}\n\nexport class BlobApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<Blob> {\n return await this.raw.blob();\n };\n}\n\nexport class TextApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<string> {\n return await this.raw.text();\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface AmountTotals\n */\nexport interface AmountTotals {\n /**\n * \n * @type {number}\n * @memberof AmountTotals\n */\n amountUsd: number;\n /**\n * \n * @type {number}\n * @memberof AmountTotals\n */\n amountX: number;\n /**\n * \n * @type {number}\n * @memberof AmountTotals\n */\n amountY: number;\n}\n\n/**\n * Check if a given object implements the AmountTotals interface.\n */\nexport function instanceOfAmountTotals(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"amountUsd\" in value;\n isInstance = isInstance && \"amountX\" in value;\n isInstance = isInstance && \"amountY\" in value;\n\n return isInstance;\n}\n\nexport function AmountTotalsFromJSON(json: any): AmountTotals {\n return AmountTotalsFromJSONTyped(json, false);\n}\n\nexport function AmountTotalsFromJSONTyped(json: any, ignoreDiscriminator: boolean): AmountTotals {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'amountUsd': json['amount_usd'],\n 'amountX': json['amount_x'],\n 'amountY': json['amount_y'],\n };\n}\n\nexport function AmountTotalsToJSON(value?: AmountTotals | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'amount_usd': value.amountUsd,\n 'amount_x': value.amountX,\n 'amount_y': value.amountY,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { AmountTotals } from './AmountTotals';\nimport {\n AmountTotalsFromJSON,\n AmountTotalsFromJSONTyped,\n AmountTotalsToJSON,\n} from './AmountTotals';\n\n/**\n * \n * @export\n * @interface CurrentPosition\n */\nexport interface CurrentPosition {\n /**\n * \n * @type {AmountTotals}\n * @memberof CurrentPosition\n */\n currentDeposits: AmountTotals;\n /**\n * \n * @type {AmountTotals}\n * @memberof CurrentPosition\n */\n unclaimedFees: AmountTotals;\n /**\n * \n * @type {number}\n * @memberof CurrentPosition\n */\n updatedAtSlot: number;\n}\n\n/**\n * Check if a given object implements the CurrentPosition interface.\n */\nexport function instanceOfCurrentPosition(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"currentDeposits\" in value;\n isInstance = isInstance && \"unclaimedFees\" in value;\n isInstance = isInstance && \"updatedAtSlot\" in value;\n\n return isInstance;\n}\n\nexport function CurrentPositionFromJSON(json: any): CurrentPosition {\n return CurrentPositionFromJSONTyped(json, false);\n}\n\nexport function CurrentPositionFromJSONTyped(json: any, ignoreDiscriminator: boolean): CurrentPosition {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'currentDeposits': AmountTotalsFromJSON(json['current_deposits']),\n 'unclaimedFees': AmountTotalsFromJSON(json['unclaimed_fees']),\n 'updatedAtSlot': json['updated_at_slot'],\n };\n}\n\nexport function CurrentPositionToJSON(value?: CurrentPosition | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'current_deposits': AmountTotalsToJSON(value.currentDeposits),\n 'unclaimed_fees': AmountTotalsToJSON(value.unclaimedFees),\n 'updated_at_slot': value.updatedAtSlot,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface CursorV1PaginationResponsePortfolioResponseDataInner\n */\nexport interface CursorV1PaginationResponsePortfolioResponseDataInner {\n /**\n * \n * @type {number}\n * @memberof CursorV1PaginationResponsePortfolioResponseDataInner\n */\n closedPositionsCount: number;\n /**\n * \n * @type {number}\n * @memberof CursorV1PaginationResponsePortfolioResponseDataInner\n */\n openPositionsCount: number;\n /**\n * \n * @type {string}\n * @memberof CursorV1PaginationResponsePortfolioResponseDataInner\n */\n poolAddress: string;\n /**\n * \n * @type {number}\n * @memberof CursorV1PaginationResponsePortfolioResponseDataInner\n */\n positionsCount: number;\n /**\n * \n * @type {number}\n * @memberof CursorV1PaginationResponsePortfolioResponseDataInner\n */\n totalClaimedFeesUsd: number;\n /**\n * \n * @type {number}\n * @memberof CursorV1PaginationResponsePortfolioResponseDataInner\n */\n totalClaimedFeesX: number;\n /**\n * \n * @type {number}\n * @memberof CursorV1PaginationResponsePortfolioResponseDataInner\n */\n totalClaimedFeesY: number;\n /**\n * \n * @type {number}\n * @memberof CursorV1PaginationResponsePortfolioResponseDataInner\n */\n totalDepositsUsd: number;\n /**\n * \n * @type {number}\n * @memberof CursorV1PaginationResponsePortfolioResponseDataInner\n */\n totalDepositsX: number;\n /**\n * \n * @type {number}\n * @memberof CursorV1PaginationResponsePortfolioResponseDataInner\n */\n totalDepositsY: number;\n /**\n * \n * @type {number}\n * @memberof CursorV1PaginationResponsePortfolioResponseDataInner\n */\n totalWithdrawsUsd: number;\n /**\n * \n * @type {number}\n * @memberof CursorV1PaginationResponsePortfolioResponseDataInner\n */\n totalWithdrawsX: number;\n /**\n * \n * @type {number}\n * @memberof CursorV1PaginationResponsePortfolioResponseDataInner\n */\n totalWithdrawsY: number;\n}\n\n/**\n * Check if a given object implements the CursorV1PaginationResponsePortfolioResponseDataInner interface.\n */\nexport function instanceOfCursorV1PaginationResponsePortfolioResponseDataInner(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"closedPositionsCount\" in value;\n isInstance = isInstance && \"openPositionsCount\" in value;\n isInstance = isInstance && \"poolAddress\" in value;\n isInstance = isInstance && \"positionsCount\" in value;\n isInstance = isInstance && \"totalClaimedFeesUsd\" in value;\n isInstance = isInstance && \"totalClaimedFeesX\" in value;\n isInstance = isInstance && \"totalClaimedFeesY\" in value;\n isInstance = isInstance && \"totalDepositsUsd\" in value;\n isInstance = isInstance && \"totalDepositsX\" in value;\n isInstance = isInstance && \"totalDepositsY\" in value;\n isInstance = isInstance && \"totalWithdrawsUsd\" in value;\n isInstance = isInstance && \"totalWithdrawsX\" in value;\n isInstance = isInstance && \"totalWithdrawsY\" in value;\n\n return isInstance;\n}\n\nexport function CursorV1PaginationResponsePortfolioResponseDataInnerFromJSON(json: any): CursorV1PaginationResponsePortfolioResponseDataInner {\n return CursorV1PaginationResponsePortfolioResponseDataInnerFromJSONTyped(json, false);\n}\n\nexport function CursorV1PaginationResponsePortfolioResponseDataInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): CursorV1PaginationResponsePortfolioResponseDataInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'closedPositionsCount': json['closed_positions_count'],\n 'openPositionsCount': json['open_positions_count'],\n 'poolAddress': json['pool_address'],\n 'positionsCount': json['positions_count'],\n 'totalClaimedFeesUsd': json['total_claimed_fees_usd'],\n 'totalClaimedFeesX': json['total_claimed_fees_x'],\n 'totalClaimedFeesY': json['total_claimed_fees_y'],\n 'totalDepositsUsd': json['total_deposits_usd'],\n 'totalDepositsX': json['total_deposits_x'],\n 'totalDepositsY': json['total_deposits_y'],\n 'totalWithdrawsUsd': json['total_withdraws_usd'],\n 'totalWithdrawsX': json['total_withdraws_x'],\n 'totalWithdrawsY': json['total_withdraws_y'],\n };\n}\n\nexport function CursorV1PaginationResponsePortfolioResponseDataInnerToJSON(value?: CursorV1PaginationResponsePortfolioResponseDataInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'closed_positions_count': value.closedPositionsCount,\n 'open_positions_count': value.openPositionsCount,\n 'pool_address': value.poolAddress,\n 'positions_count': value.positionsCount,\n 'total_claimed_fees_usd': value.totalClaimedFeesUsd,\n 'total_claimed_fees_x': value.totalClaimedFeesX,\n 'total_claimed_fees_y': value.totalClaimedFeesY,\n 'total_deposits_usd': value.totalDepositsUsd,\n 'total_deposits_x': value.totalDepositsX,\n 'total_deposits_y': value.totalDepositsY,\n 'total_withdraws_usd': value.totalWithdrawsUsd,\n 'total_withdraws_x': value.totalWithdrawsX,\n 'total_withdraws_y': value.totalWithdrawsY,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { CursorV1PaginationResponsePortfolioResponseDataInner } from './CursorV1PaginationResponsePortfolioResponseDataInner';\nimport {\n CursorV1PaginationResponsePortfolioResponseDataInnerFromJSON,\n CursorV1PaginationResponsePortfolioResponseDataInnerFromJSONTyped,\n CursorV1PaginationResponsePortfolioResponseDataInnerToJSON,\n} from './CursorV1PaginationResponsePortfolioResponseDataInner';\n\n/**\n * \n * @export\n * @interface CursorV1PaginationResponsePortfolioResponse\n */\nexport interface CursorV1PaginationResponsePortfolioResponse {\n /**\n * \n * @type {Array<CursorV1PaginationResponsePortfolioResponseDataInner>}\n * @memberof CursorV1PaginationResponsePortfolioResponse\n */\n data: Array<CursorV1PaginationResponsePortfolioResponseDataInner>;\n /**\n * \n * @type {number}\n * @memberof CursorV1PaginationResponsePortfolioResponse\n */\n limit: number;\n /**\n * \n * @type {string}\n * @memberof CursorV1PaginationResponsePortfolioResponse\n */\n nextCursor?: string | null;\n}\n\n/**\n * Check if a given object implements the CursorV1PaginationResponsePortfolioResponse interface.\n */\nexport function instanceOfCursorV1PaginationResponsePortfolioResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"data\" in value;\n isInstance = isInstance && \"limit\" in value;\n\n return isInstance;\n}\n\nexport function CursorV1PaginationResponsePortfolioResponseFromJSON(json: any): CursorV1PaginationResponsePortfolioResponse {\n return CursorV1PaginationResponsePortfolioResponseFromJSONTyped(json, false);\n}\n\nexport function CursorV1PaginationResponsePortfolioResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): CursorV1PaginationResponsePortfolioResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'data': ((json['data'] as Array<any>).map(CursorV1PaginationResponsePortfolioResponseDataInnerFromJSON)),\n 'limit': json['limit'],\n 'nextCursor': !exists(json, 'next_cursor') ? undefined : json['next_cursor'],\n };\n}\n\nexport function CursorV1PaginationResponsePortfolioResponseToJSON(value?: CursorV1PaginationResponsePortfolioResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'data': ((value.data as Array<any>).map(CursorV1PaginationResponsePortfolioResponseDataInnerToJSON)),\n 'limit': value.limit,\n 'next_cursor': value.nextCursor,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { AmountTotals } from './AmountTotals';\nimport {\n AmountTotalsFromJSON,\n AmountTotalsFromJSONTyped,\n AmountTotalsToJSON,\n} from './AmountTotals';\nimport type { CurrentPosition } from './CurrentPosition';\nimport {\n CurrentPositionFromJSON,\n CurrentPositionFromJSONTyped,\n CurrentPositionToJSON,\n} from './CurrentPosition';\n\n/**\n * \n * @export\n * @interface CursorV1PaginationResponsePositionsResponseDataInner\n */\nexport interface CursorV1PaginationResponsePositionsResponseDataInner {\n /**\n * \n * @type {number}\n * @memberof CursorV1PaginationResponsePositionsResponseDataInner\n */\n closedAt?: number | null;\n /**\n * \n * @type {number}\n * @memberof CursorV1PaginationResponsePositionsResponseDataInner\n */\n createdAt: number;\n /**\n * \n * @type {CurrentPosition}\n * @memberof CursorV1PaginationResponsePositionsResponseDataInner\n */\n currentPosition?: CurrentPosition | null;\n /**\n * \n * @type {boolean}\n * @memberof CursorV1PaginationResponsePositionsResponseDataInner\n */\n isClosed: boolean;\n /**\n * \n * @type {number}\n * @memberof CursorV1PaginationResponsePositionsResponseDataInner\n */\n pnl: number;\n /**\n * \n * @type {number}\n * @memberof CursorV1PaginationResponsePositionsResponseDataInner\n */\n pnlChangePct: number;\n /**\n * \n * @type {string}\n * @memberof CursorV1PaginationResponsePositionsResponseDataInner\n */\n poolAddress: string;\n /**\n * \n * @type {string}\n * @memberof CursorV1PaginationResponsePositionsResponseDataInner\n */\n positionAddress: string;\n /**\n * \n * @type {AmountTotals}\n * @memberof CursorV1PaginationResponsePositionsResponseDataInner\n */\n totalClaimedFees: AmountTotals;\n /**\n * \n * @type {AmountTotals}\n * @memberof CursorV1PaginationResponsePositionsResponseDataInner\n */\n totalDeposits: AmountTotals;\n /**\n * \n * @type {AmountTotals}\n * @memberof CursorV1PaginationResponsePositionsResponseDataInner\n */\n totalWithdraws: AmountTotals;\n}\n\n/**\n * Check if a given object implements the CursorV1PaginationResponsePositionsResponseDataInner interface.\n */\nexport function instanceOfCursorV1PaginationResponsePositionsResponseDataInner(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"createdAt\" in value;\n isInstance = isInstance && \"isClosed\" in value;\n isInstance = isInstance && \"pnl\" in value;\n isInstance = isInstance && \"pnlChangePct\" in value;\n isInstance = isInstance && \"poolAddress\" in value;\n isInstance = isInstance && \"positionAddress\" in value;\n isInstance = isInstance && \"totalClaimedFees\" in value;\n isInstance = isInstance && \"totalDeposits\" in value;\n isInstance = isInstance && \"totalWithdraws\" in value;\n\n return isInstance;\n}\n\nexport function CursorV1PaginationResponsePositionsResponseDataInnerFromJSON(json: any): CursorV1PaginationResponsePositionsResponseDataInner {\n return CursorV1PaginationResponsePositionsResponseDataInnerFromJSONTyped(json, false);\n}\n\nexport function CursorV1PaginationResponsePositionsResponseDataInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): CursorV1PaginationResponsePositionsResponseDataInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'closedAt': !exists(json, 'closed_at') ? undefined : json['closed_at'],\n 'createdAt': json['created_at'],\n 'currentPosition': !exists(json, 'current_position') ? undefined : CurrentPositionFromJSON(json['current_position']),\n 'isClosed': json['is_closed'],\n 'pnl': json['pnl'],\n 'pnlChangePct': json['pnl_change_pct'],\n 'poolAddress': json['pool_address'],\n 'positionAddress': json['position_address'],\n 'totalClaimedFees': AmountTotalsFromJSON(json['total_claimed_fees']),\n 'totalDeposits': AmountTotalsFromJSON(json['total_deposits']),\n 'totalWithdraws': AmountTotalsFromJSON(json['total_withdraws']),\n };\n}\n\nexport function CursorV1PaginationResponsePositionsResponseDataInnerToJSON(value?: CursorV1PaginationResponsePositionsResponseDataInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'closed_at': value.closedAt,\n 'created_at': value.createdAt,\n 'current_position': CurrentPositionToJSON(value.currentPosition),\n 'is_closed': value.isClosed,\n 'pnl': value.pnl,\n 'pnl_change_pct': value.pnlChangePct,\n 'pool_address': value.poolAddress,\n 'position_address': value.positionAddress,\n 'total_claimed_fees': AmountTotalsToJSON(value.totalClaimedFees),\n 'total_deposits': AmountTotalsToJSON(value.totalDeposits),\n 'total_withdraws': AmountTotalsToJSON(value.totalWithdraws),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { CursorV1PaginationResponsePositionsResponseDataInner } from './CursorV1PaginationResponsePositionsResponseDataInner';\nimport {\n CursorV1PaginationResponsePositionsResponseDataInnerFromJSON,\n CursorV1PaginationResponsePositionsResponseDataInnerFromJSONTyped,\n CursorV1PaginationResponsePositionsResponseDataInnerToJSON,\n} from './CursorV1PaginationResponsePositionsResponseDataInner';\n\n/**\n * \n * @export\n * @interface CursorV1PaginationResponsePositionsResponse\n */\nexport interface CursorV1PaginationResponsePositionsResponse {\n /**\n * \n * @type {Array<CursorV1PaginationResponsePositionsResponseDataInner>}\n * @memberof CursorV1PaginationResponsePositionsResponse\n */\n data: Array<CursorV1PaginationResponsePositionsResponseDataInner>;\n /**\n * \n * @type {number}\n * @memberof CursorV1PaginationResponsePositionsResponse\n */\n limit: number;\n /**\n * \n * @type {string}\n * @memberof CursorV1PaginationResponsePositionsResponse\n */\n nextCursor?: string | null;\n}\n\n/**\n * Check if a given object implements the CursorV1PaginationResponsePositionsResponse interface.\n */\nexport function instanceOfCursorV1PaginationResponsePositionsResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"data\" in value;\n isInstance = isInstance && \"limit\" in value;\n\n return isInstance;\n}\n\nexport function CursorV1PaginationResponsePositionsResponseFromJSON(json: any): CursorV1PaginationResponsePositionsResponse {\n return CursorV1PaginationResponsePositionsResponseFromJSONTyped(json, false);\n}\n\nexport function CursorV1PaginationResponsePositionsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): CursorV1PaginationResponsePositionsResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'data': ((json['data'] as Array<any>).map(CursorV1PaginationResponsePositionsResponseDataInnerFromJSON)),\n 'limit': json['limit'],\n 'nextCursor': !exists(json, 'next_cursor') ? undefined : json['next_cursor'],\n };\n}\n\nexport function CursorV1PaginationResponsePositionsResponseToJSON(value?: CursorV1PaginationResponsePositionsResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'data': ((value.data as Array<any>).map(CursorV1PaginationResponsePositionsResponseDataInnerToJSON)),\n 'limit': value.limit,\n 'next_cursor': value.nextCursor,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ErrorResponse\n */\nexport interface ErrorResponse {\n /**\n * \n * @type {string}\n * @memberof ErrorResponse\n */\n message: string;\n}\n\n/**\n * Check if a given object implements the ErrorResponse interface.\n */\nexport function instanceOfErrorResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"message\" in value;\n\n return isInstance;\n}\n\nexport function ErrorResponseFromJSON(json: any): ErrorResponse {\n return ErrorResponseFromJSONTyped(json, false);\n}\n\nexport function ErrorResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ErrorResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'message': json['message'],\n };\n}\n\nexport function ErrorResponseToJSON(value?: ErrorResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'message': value.message,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface GetGroupDetailsParams\n */\nexport interface GetGroupDetailsParams {\n /**\n * \n * @type {string}\n * @memberof GetGroupDetailsParams\n */\n lexicalOrderMints: string;\n}\n\n/**\n * Check if a given object implements the GetGroupDetailsParams interface.\n */\nexport function instanceOfGetGroupDetailsParams(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"lexicalOrderMints\" in value;\n\n return isInstance;\n}\n\nexport function GetGroupDetailsParamsFromJSON(json: any): GetGroupDetailsParams {\n return GetGroupDetailsParamsFromJSONTyped(json, false);\n}\n\nexport function GetGroupDetailsParamsFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetGroupDetailsParams {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'lexicalOrderMints': json['lexical_order_mints'],\n };\n}\n\nexport function GetGroupDetailsParamsToJSON(value?: GetGroupDetailsParams | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'lexical_order_mints': value.lexicalOrderMints,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface GetGroupsQuery\n */\nexport interface GetGroupsQuery {\n /**\n * Time window to aggregate fee tvl ratio. Returns Max\n * @type {string}\n * @memberof GetGroupsQuery\n */\n feeTvlRatioTw?: string | null;\n /**\n * Conditions to filter documents by field values\n * \n * Format: `<expr> [&& <expr> ...]`\n * \n * Where each expression is: `<field><op><value>`\n * \n * Allowed fields:\n * - Numeric: `tvl` `volume_*` `fee_*` `fee_tvl_ratio_*` `apr_*`\n * - Boolean: `is_blacklisted`\n * - Text: `pool_address` `name` `token_x` `token_y`\n * \n * Operators:\n * - Numeric: `=` `>` `>=` `<` `<=`\n * - Boolean: `=true` `=false`\n * - Text:\n * - exact match: `=<value>`\n * - multi-value OR: `=[value1|value2|...]`\n * \n * Notes:\n * - Multiple expressions are combined using logical **AND** (`&&`)\n * - Whitespace around operators is ignored\n * \n * Examples:\n * - `tvl>1000`\n * - `is_blacklisted=false && volume_24h>=50000`\n * @type {string}\n * @memberof GetGroupsQuery\n */\n filterBy?: string | null;\n /**\n * Page number (1-based)\n * @type {number}\n * @memberof GetGroupsQuery\n */\n page?: number | null;\n /**\n * Number of pools to return per page. Max 100\n * @type {number}\n * @memberof GetGroupsQuery\n */\n pageSize?: number | null;\n /**\n * Search query used to match pools by name, tokens, or address\n * @type {string}\n * @memberof GetGroupsQuery\n */\n query?: string | null;\n /**\n * Sort results by one or more fields\n * \n * Format:\n * - Time-windowed metrics: `<metric>_<window>:<direction>`\n * - Non-windowed metrics: `<field>:<direction>`\n * \n * - `direction`: `asc` or `desc`\n * - `window` (when applicable): `5m` `30m` `1h` `2h` `4h` `12h` `24h`\n * \n * Available fields:\n * - Time-windowed metrics: `volume_*` `fee_*` `fee_tvl_ratio_*` `apr_*`\n * - Non-windowed metrics: `tvl` `fee_pct` `bin_step` `pool_created_at` `farm_apy`\n * \n * Default: `volume_24h:desc`\n * \n * Examples:\n * - `volume_24h:desc`\n * - `fee_1h:asc`\n * - `tvl:desc`\n * @type {string}\n * @memberof GetGroupsQuery\n */\n sortBy?: string | null;\n /**\n * Time window to aggregate volume. Returns sum\n * @type {string}\n * @memberof GetGroupsQuery\n */\n volumeTw?: string | null;\n}\n\n/**\n * Check if a given object implements the GetGroupsQuery interface.\n */\nexport function instanceOfGetGroupsQuery(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function GetGroupsQueryFromJSON(json: any): GetGroupsQuery {\n return GetGroupsQueryFromJSONTyped(json, false);\n}\n\nexport function GetGroupsQueryFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetGroupsQuery {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'feeTvlRatioTw': !exists(json, 'fee_tvl_ratio_tw') ? undefined : json['fee_tvl_ratio_tw'],\n 'filterBy': !exists(json, 'filter_by') ? undefined : json['filter_by'],\n 'page': !exists(json, 'page') ? undefined : json['page'],\n 'pageSize': !exists(json, 'page_size') ? undefined : json['page_size'],\n 'query': !exists(json, 'query') ? undefined : json['query'],\n 'sortBy': !exists(json, 'sort_by') ? undefined : json['sort_by'],\n 'volumeTw': !exists(json, 'volume_tw') ? undefined : json['volume_tw'],\n };\n}\n\nexport function GetGroupsQueryToJSON(value?: GetGroupsQuery | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'fee_tvl_ratio_tw': value.feeTvlRatioTw,\n 'filter_by': value.filterBy,\n 'page': value.page,\n 'page_size': value.pageSize,\n 'query': value.query,\n 'sort_by': value.sortBy,\n 'volume_tw': value.volumeTw,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface GetPoolParams\n */\nexport interface GetPoolParams {\n /**\n * Base58-encoded pool address\n * @type {string}\n * @memberof GetPoolParams\n */\n address: string;\n}\n\n/**\n * Check if a given object implements the GetPoolParams interface.\n */\nexport function instanceOfGetPoolParams(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"address\" in value;\n\n return isInstance;\n}\n\nexport function GetPoolParamsFromJSON(json: any): GetPoolParams {\n return GetPoolParamsFromJSONTyped(json, false);\n}\n\nexport function GetPoolParamsFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetPoolParams {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'address': json['address'],\n };\n}\n\nexport function GetPoolParamsToJSON(value?: GetPoolParams | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'address': value.address,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface PoolConfig\n */\nexport interface PoolConfig {\n /**\n * \n * @type {number}\n * @memberof PoolConfig\n */\n activationPoint: number;\n /**\n * \n * @type {number}\n * @memberof PoolConfig\n */\n activationType: number;\n /**\n * \n * @type {number}\n * @memberof PoolConfig\n */\n baseFeeMode: number;\n /**\n * \n * @type {number}\n * @memberof PoolConfig\n */\n baseFeePct: number;\n /**\n * Fee collection mode. 0 = both, 1 = quote\n * @type {number}\n * @memberof PoolConfig\n */\n collectFeeMode: number;\n /**\n * \n * @type {boolean}\n * @memberof PoolConfig\n */\n concentratedLiquidity: boolean;\n /**\n * \n * @type {boolean}\n * @memberof PoolConfig\n */\n dynamicFeeInitialized: boolean;\n /**\n * \n * @type {number}\n * @memberof PoolConfig\n */\n maxPrice: number;\n /**\n * \n * @type {number}\n * @memberof PoolConfig\n */\n minPrice: number;\n /**\n * \n * @type {number}\n * @memberof PoolConfig\n */\n partnerFeePct: number;\n /**\n * \n * @type {number}\n * @memberof PoolConfig\n */\n poolType: number;\n /**\n * \n * @type {number}\n * @memberof PoolConfig\n */\n protocolFeePct: number;\n /**\n * \n * @type {number}\n * @memberof PoolConfig\n */\n referralFeePct: number;\n}\n\n/**\n * Check if a given object implements the PoolConfig interface.\n */\nexport function instanceOfPoolConfig(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"activationPoint\" in value;\n isInstance = isInstance && \"activationType\" in value;\n isInstance = isInstance && \"baseFeeMode\" in value;\n isInstance = isInstance && \"baseFeePct\" in value;\n isInstance = isInstance && \"collectFeeMode\" in value;\n isInstance = isInstance && \"concentratedLiquidity\" in value;\n isInstance = isInstance && \"dynamicFeeInitialized\" in value;\n isInstance = isInstance && \"maxPrice\" in value;\n isInstance = isInstance && \"minPrice\" in value;\n isInstance = isInstance && \"partnerFeePct\" in value;\n isInstance = isInstance && \"poolType\" in value;\n isInstance = isInstance && \"protocolFeePct\" in value;\n isInstance = isInstance && \"referralFeePct\" in value;\n\n return isInstance;\n}\n\nexport function PoolConfigFromJSON(json: any): PoolConfig {\n return PoolConfigFromJSONTyped(json, false);\n}\n\nexport function PoolConfigFromJSONTyped(json: any, ignoreDiscriminator: boolean): PoolConfig {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'activationPoint': json['activation_point'],\n 'activationType': json['activation_type'],\n 'baseFeeMode': json['base_fee_mode'],\n 'baseFeePct': json['base_fee_pct'],\n 'collectFeeMode': json['collect_fee_mode'],\n 'concentratedLiquidity': json['concentrated_liquidity'],\n 'dynamicFeeInitialized': json['dynamic_fee_initialized'],\n 'maxPrice': json['max_price'],\n 'minPrice': json['min_price'],\n 'partnerFeePct': json['partner_fee_pct'],\n 'poolType': json['pool_type'],\n 'protocolFeePct': json['protocol_fee_pct'],\n 'referralFeePct': json['referral_fee_pct'],\n };\n}\n\nexport function PoolConfigToJSON(value?: PoolConfig | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'activation_point': value.activationPoint,\n 'activation_type': value.activationType,\n 'base_fee_mode': value.baseFeeMode,\n 'base_fee_pct': value.baseFeePct,\n 'collect_fee_mode': value.collectFeeMode,\n 'concentrated_liquidity': value.concentratedLiquidity,\n 'dynamic_fee_initialized': value.dynamicFeeInitialized,\n 'max_price': value.maxPrice,\n 'min_price': value.minPrice,\n 'partner_fee_pct': value.partnerFeePct,\n 'pool_type': value.poolType,\n 'protocol_fee_pct': value.protocolFeePct,\n 'referral_fee_pct': value.referralFeePct,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TimeWindowData\n */\nexport interface TimeWindowData {\n /**\n * \n * @type {number}\n * @memberof TimeWindowData\n */\n _12h: number;\n /**\n * \n * @type {number}\n * @memberof TimeWindowData\n */\n _1h: number;\n /**\n * \n * @type {number}\n * @memberof TimeWindowData\n */\n _24h: number;\n /**\n * \n * @type {number}\n * @memberof TimeWindowData\n */\n _2h: number;\n /**\n * \n * @type {number}\n * @memberof TimeWindowData\n */\n _30m: number;\n /**\n * \n * @type {number}\n * @memberof TimeWindowData\n */\n _4h: number;\n}\n\n/**\n * Check if a given object implements the TimeWindowData interface.\n */\nexport function instanceOfTimeWindowData(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"_12h\" in value;\n isInstance = isInstance && \"_1h\" in value;\n isInstance = isInstance && \"_24h\" in value;\n isInstance = isInstance && \"_2h\" in value;\n isInstance = isInstance && \"_30m\" in value;\n isInstance = isInstance && \"_4h\" in value;\n\n return isInstance;\n}\n\nexport function TimeWindowDataFromJSON(json: any): TimeWindowData {\n return TimeWindowDataFromJSONTyped(json, false);\n}\n\nexport function TimeWindowDataFromJSONTyped(json: any, ignoreDiscriminator: boolean): TimeWindowData {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n '_12h': json['12h'],\n '_1h': json['1h'],\n '_24h': json['24h'],\n '_2h': json['2h'],\n '_30m': json['30m'],\n '_4h': json['4h'],\n };\n}\n\nexport function TimeWindowDataToJSON(value?: TimeWindowData | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n '12h': value._12h,\n '1h': value._1h,\n '24h': value._24h,\n '2h': value._2h,\n '30m': value._30m,\n '4h': value._4h,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenMetrics\n */\nexport interface TokenMetrics {\n /**\n * \n * @type {string}\n * @memberof TokenMetrics\n */\n address: string;\n /**\n * \n * @type {number}\n * @memberof TokenMetrics\n */\n decimals: number;\n /**\n * \n * @type {boolean}\n * @memberof TokenMetrics\n */\n freezeAuthorityDisabled: boolean;\n /**\n * \n * @type {number}\n * @memberof TokenMetrics\n */\n holders: number;\n /**\n * \n * @type {boolean}\n * @memberof TokenMetrics\n */\n isVerified: boolean;\n /**\n * \n * @type {number}\n * @memberof TokenMetrics\n */\n marketCap: number;\n /**\n * \n * @type {string}\n * @memberof TokenMetrics\n */\n name: string;\n /**\n * \n * @type {number}\n * @memberof TokenMetrics\n */\n price: number;\n /**\n * \n * @type {string}\n * @memberof TokenMetrics\n */\n symbol: string;\n /**\n * \n * @type {number}\n * @memberof TokenMetrics\n */\n totalSupply: number;\n}\n\n/**\n * Check if a given object implements the TokenMetrics interface.\n */\nexport function instanceOfTokenMetrics(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"address\" in value;\n isInstance = isInstance && \"decimals\" in value;\n isInstance = isInstance && \"freezeAuthorityDisabled\" in value;\n isInstance = isInstance && \"holders\" in value;\n isInstance = isInstance && \"isVerified\" in value;\n isInstance = isInstance && \"marketCap\" in value;\n isInstance = isInstance && \"name\" in value;\n isInstance = isInstance && \"price\" in value;\n isInstance = isInstance && \"symbol\" in value;\n isInstance = isInstance && \"totalSupply\" in value;\n\n return isInstance;\n}\n\nexport function TokenMetricsFromJSON(json: any): TokenMetrics {\n return TokenMetricsFromJSONTyped(json, false);\n}\n\nexport function TokenMetricsFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenMetrics {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'address': json['address'],\n 'decimals': json['decimals'],\n 'freezeAuthorityDisabled': json['freeze_authority_disabled'],\n 'holders': json['holders'],\n 'isVerified': json['is_verified'],\n 'marketCap': json['market_cap'],\n 'name': json['name'],\n 'price': json['price'],\n 'symbol': json['symbol'],\n 'totalSupply': json['total_supply'],\n };\n}\n\nexport function TokenMetricsToJSON(value?: TokenMetrics | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'address': value.address,\n 'decimals': value.decimals,\n 'freeze_authority_disabled': value.freezeAuthorityDisabled,\n 'holders': value.holders,\n 'is_verified': value.isVerified,\n 'market_cap': value.marketCap,\n 'name': value.name,\n 'price': value.price,\n 'symbol': value.symbol,\n 'total_supply': value.totalSupply,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface VestedLiquidity\n */\nexport interface VestedLiquidity {\n /**\n * Vested liquidity for more than 3 months\n * @type {number}\n * @memberof VestedLiquidity\n */\n months3: number;\n /**\n * Vested liquidity for more than 6 months\n * @type {number}\n * @memberof VestedLiquidity\n */\n months6: number;\n}\n\n/**\n * Check if a given object implements the VestedLiquidity interface.\n */\nexport function instanceOfVestedLiquidity(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"months3\" in value;\n isInstance = isInstance && \"months6\" in value;\n\n return isInstance;\n}\n\nexport function VestedLiquidityFromJSON(json: any): VestedLiquidity {\n return VestedLiquidityFromJSONTyped(json, false);\n}\n\nexport function VestedLiquidityFromJSONTyped(json: any, ignoreDiscriminator: boolean): VestedLiquidity {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'months3': json['months_3'],\n 'months6': json['months_6'],\n };\n}\n\nexport function VestedLiquidityToJSON(value?: VestedLiquidity | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'months_3': value.months3,\n 'months_6': value.months6,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { PoolConfig } from './PoolConfig';\nimport {\n PoolConfigFromJSON,\n PoolConfigFromJSONTyped,\n PoolConfigToJSON,\n} from './PoolConfig';\nimport type { TimeWindowData } from './TimeWindowData';\nimport {\n TimeWindowDataFromJSON,\n TimeWindowDataFromJSONTyped,\n TimeWindowDataToJSON,\n} from './TimeWindowData';\nimport type { TokenMetrics } from './TokenMetrics';\nimport {\n TokenMetricsFromJSON,\n TokenMetricsFromJSONTyped,\n TokenMetricsToJSON,\n} from './TokenMetrics';\nimport type { VestedLiquidity } from './VestedLiquidity';\nimport {\n VestedLiquidityFromJSON,\n VestedLiquidityFromJSONTyped,\n VestedLiquidityToJSON,\n} from './VestedLiquidity';\n\n/**\n * \n * @export\n * @interface GetPools200ResponseDataInner\n */\nexport interface GetPools200ResponseDataInner {\n /**\n * Address of the liquidity pair\n * @type {string}\n * @memberof GetPools200ResponseDataInner\n */\n address: string;\n /**\n * Aplha vault\n * @type {string}\n * @memberof GetPools200ResponseDataInner\n */\n alphaVault: string;\n /**\n * Pool created at timestamp\n * @type {number}\n * @memberof GetPools200ResponseDataInner\n */\n createdAt: number;\n /**\n * Price of the liquidity pair\n * @type {number}\n * @memberof GetPools200ResponseDataInner\n */\n currentPrice: number;\n /**\n * Farm reward apr\n * @type {number}\n * @memberof GetPools200ResponseDataInner\n */\n farmApr: number;\n /**\n * Farm reward apy\n * @type {number}\n * @memberof GetPools200ResponseDataInner\n */\n farmApy: number;\n /**\n * \n * @type {TimeWindowData}\n * @memberof GetPools200ResponseDataInner\n */\n feeTvlRatio: TimeWindowData;\n /**\n * \n * @type {TimeWindowData}\n * @memberof GetPools200ResponseDataInner\n */\n fees: TimeWindowData;\n /**\n * Whether the pool has a farm or not\n * @type {boolean}\n * @memberof GetPools200ResponseDataInner\n */\n hasFarm: boolean;\n /**\n * Flag to indicate whether the pair is blacklisted\n * @type {boolean}\n * @memberof GetPools200ResponseDataInner\n */\n isBlacklisted: boolean;\n /**\n * Launchpad of the pair\n * @type {string}\n * @memberof GetPools200ResponseDataInner\n */\n launchpad?: string | null;\n /**\n * Name of the liquidity pair\n * @type {string}\n * @memberof GetPools200ResponseDataInner\n */\n name: string;\n /**\n * Permanently locked liquidity inside the pool\n * @type {number}\n * @memberof GetPools200ResponseDataInner\n */\n permanentLockLiquidity: number;\n /**\n * \n * @type {PoolConfig}\n * @memberof GetPools200ResponseDataInner\n */\n poolConfig: PoolConfig;\n /**\n * \n * @type {TimeWindowData}\n * @memberof GetPools200ResponseDataInner\n */\n protocolFees: TimeWindowData;\n /**\n * Tags of the pair\n * @type {Array<string>}\n * @memberof GetPools200ResponseDataInner\n */\n tags: Array<string>;\n /**\n * \n * @type {TokenMetrics}\n * @memberof GetPools200ResponseDataInner\n */\n tokenX: TokenMetrics;\n /**\n * Amount of token X in the pool\n * @type {number}\n * @memberof GetPools200ResponseDataInner\n */\n tokenXAmount: number;\n /**\n * \n * @type {TokenMetrics}\n * @memberof GetPools200ResponseDataInner\n */\n tokenY: TokenMetrics;\n /**\n * Amount of token Y in the pool\n * @type {number}\n * @memberof GetPools200ResponseDataInner\n */\n tokenYAmount: number;\n /**\n * Total liquidity the liquidity pair holding. Also known as Total Value Locked\n * @type {number}\n * @memberof GetPools200ResponseDataInner\n */\n tvl: number;\n /**\n * Vault X\n * @type {string}\n * @memberof GetPools200ResponseDataInner\n */\n vaultX: string;\n /**\n * Vault Y\n * @type {string}\n * @memberof GetPools200ResponseDataInner\n */\n vaultY: string;\n /**\n * \n * @type {VestedLiquidity}\n * @memberof GetPools200ResponseDataInner\n */\n vestedLiquidity: VestedLiquidity;\n /**\n * \n * @type {TimeWindowData}\n * @memberof GetPools200ResponseDataInner\n */\n volume: TimeWindowData;\n}\n\n/**\n * Check if a given object implements the GetPools200ResponseDataInner interface.\n */\nexport function instanceOfGetPools200ResponseDataInner(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"address\" in value;\n isInstance = isInstance && \"alphaVault\" in value;\n isInstance = isInstance && \"createdAt\" in value;\n isInstance = isInstance && \"currentPrice\" in value;\n isInstance = isInstance && \"farmApr\" in value;\n isInstance = isInstance && \"farmApy\" in value;\n isInstance = isInstance && \"feeTvlRatio\" in value;\n isInstance = isInstance && \"fees\" in value;\n isInstance = isInstance && \"hasFarm\" in value;\n isInstance = isInstance && \"isBlacklisted\" in value;\n isInstance = isInstance && \"name\" in value;\n isInstance = isInstance && \"permanentLockLiquidity\" in value;\n isInstance = isInstance && \"poolConfig\" in value;\n isInstance = isInstance && \"protocolFees\" in value;\n isInstance = isInstance && \"tags\" in value;\n isInstance = isInstance && \"tokenX\" in value;\n isInstance = isInstance && \"tokenXAmount\" in value;\n isInstance = isInstance && \"tokenY\" in value;\n isInstance = isInstance && \"tokenYAmount\" in value;\n isInstance = isInstance && \"tvl\" in value;\n isInstance = isInstance && \"vaultX\" in value;\n isInstance = isInstance && \"vaultY\" in value;\n isInstance = isInstance && \"vestedLiquidity\" in value;\n isInstance = isInstance && \"volume\" in value;\n\n return isInstance;\n}\n\nexport function GetPools200ResponseDataInnerFromJSON(json: any): GetPools200ResponseDataInner {\n return GetPools200ResponseDataInnerFromJSONTyped(json, false);\n}\n\nexport function GetPools200ResponseDataInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetPools200ResponseDataInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'address': json['address'],\n 'alphaVault': json['alpha_vault'],\n 'createdAt': json['created_at'],\n 'currentPrice': json['current_price'],\n 'farmApr': json['farm_apr'],\n 'farmApy': json['farm_apy'],\n 'feeTvlRatio': TimeWindowDataFromJSON(json['fee_tvl_ratio']),\n 'fees': TimeWindowDataFromJSON(json['fees']),\n 'hasFarm': json['has_farm'],\n 'isBlacklisted': json['is_blacklisted'],\n 'launchpad': !exists(json, 'launchpad') ? undefined : json['launchpad'],\n 'name': json['name'],\n 'permanentLockLiquidity': json['permanent_lock_liquidity'],\n 'poolConfig': PoolConfigFromJSON(json['pool_config']),\n 'protocolFees': TimeWindowDataFromJSON(json['protocol_fees']),\n 'tags': json['tags'],\n 'tokenX': TokenMetricsFromJSON(json['token_x']),\n 'tokenXAmount': json['token_x_amount'],\n 'tokenY': TokenMetricsFromJSON(json['token_y']),\n 'tokenYAmount': json['token_y_amount'],\n 'tvl': json['tvl'],\n 'vaultX': json['vault_x'],\n 'vaultY': json['vault_y'],\n 'vestedLiquidity': VestedLiquidityFromJSON(json['vested_liquidity']),\n 'volume': TimeWindowDataFromJSON(json['volume']),\n };\n}\n\nexport function GetPools200ResponseDataInnerToJSON(value?: GetPools200ResponseDataInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'address': value.address,\n 'alpha_vault': value.alphaVault,\n 'created_at': value.createdAt,\n 'current_price': value.currentPrice,\n 'farm_apr': value.farmApr,\n 'farm_apy': value.farmApy,\n 'fee_tvl_ratio': TimeWindowDataToJSON(value.feeTvlRatio),\n 'fees': TimeWindowDataToJSON(value.fees),\n 'has_farm': value.hasFarm,\n 'is_blacklisted': value.isBlacklisted,\n 'launchpad': value.launchpad,\n 'name': value.name,\n 'permanent_lock_liquidity': value.permanentLockLiquidity,\n 'pool_config': PoolConfigToJSON(value.poolConfig),\n 'protocol_fees': TimeWindowDataToJSON(value.protocolFees),\n 'tags': value.tags,\n 'token_x': TokenMetricsToJSON(value.tokenX),\n 'token_x_amount': value.tokenXAmount,\n 'token_y': TokenMetricsToJSON(value.tokenY),\n 'token_y_amount': value.tokenYAmount,\n 'tvl': value.tvl,\n 'vault_x': value.vaultX,\n 'vault_y': value.vaultY,\n 'vested_liquidity': VestedLiquidityToJSON(value.vestedLiquidity),\n 'volume': TimeWindowDataToJSON(value.volume),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { GetPools200ResponseDataInner } from './GetPools200ResponseDataInner';\nimport {\n GetPools200ResponseDataInnerFromJSON,\n GetPools200ResponseDataInnerFromJSONTyped,\n GetPools200ResponseDataInnerToJSON,\n} from './GetPools200ResponseDataInner';\n\n/**\n * \n * @export\n * @interface GetPools200Response\n */\nexport interface GetPools200Response {\n /**\n * \n * @type {number}\n * @memberof GetPools200Response\n */\n currentPage: number;\n /**\n * \n * @type {Array<GetPools200ResponseDataInner>}\n * @memberof GetPools200Response\n */\n data: Array<GetPools200ResponseDataInner>;\n /**\n * \n * @type {number}\n * @memberof GetPools200Response\n */\n pageSize: number;\n /**\n * \n * @type {number}\n * @memberof GetPools200Response\n */\n pages: number;\n /**\n * \n * @type {number}\n * @memberof GetPools200Response\n */\n total: number;\n}\n\n/**\n * Check if a given object implements the GetPools200Response interface.\n */\nexport function instanceOfGetPools200Response(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"currentPage\" in value;\n isInstance = isInstance && \"data\" in value;\n isInstance = isInstance && \"pageSize\" in value;\n isInstance = isInstance && \"pages\" in value;\n isInstance = isInstance && \"total\" in value;\n\n return isInstance;\n}\n\nexport function GetPools200ResponseFromJSON(json: any): GetPools200Response {\n return GetPools200ResponseFromJSONTyped(json, false);\n}\n\nexport function GetPools200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetPools200Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'currentPage': json['current_page'],\n 'data': ((json['data'] as Array<any>).map(GetPools200ResponseDataInnerFromJSON)),\n 'pageSize': json['page_size'],\n 'pages': json['pages'],\n 'total': json['total'],\n };\n}\n\nexport function GetPools200ResponseToJSON(value?: GetPools200Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'current_page': value.currentPage,\n 'data': ((value.data as Array<any>).map(GetPools200ResponseDataInnerToJSON)),\n 'page_size': value.pageSize,\n 'pages': value.pages,\n 'total': value.total,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface GetPoolsQuery\n */\nexport interface GetPoolsQuery {\n /**\n * Conditions to filter documents by field values\n * \n * Format: `<expr> [&& <expr> ...]`\n * \n * Where each expression is: `<field><op><value>`\n * \n * Allowed fields:\n * - Numeric: `tvl` `volume_*` `fee_*` `fee_tvl_ratio_*` `apr_*`\n * - Boolean: `is_blacklisted`\n * - Text: `pool_address` `name` `token_x` `token_y`\n * \n * Operators:\n * - Numeric: `=` `>` `>=` `<` `<=`\n * - Boolean: `=true` `=false`\n * - Text:\n * - exact match: `=<value>`\n * - multi-value OR: `=[value1|value2|...]`\n * \n * Notes:\n * - Multiple expressions are combined using logical **AND** (`&&`)\n * - Whitespace around operators is ignored\n * \n * Examples:\n * - `tvl>1000`\n * - `is_blacklisted=false && volume_24h>=50000`\n * @type {string}\n * @memberof GetPoolsQuery\n */\n filterBy?: string | null;\n /**\n * Page number (1-based)\n * @type {number}\n * @memberof GetPoolsQuery\n */\n page?: number | null;\n /**\n * Number of pools to return per page. Max 1000\n * @type {number}\n * @memberof GetPoolsQuery\n */\n pageSize?: number | null;\n /**\n * Search query used to match pools by name, tokens, or address\n * @type {string}\n * @memberof GetPoolsQuery\n */\n query?: string | null;\n /**\n * Sort results by one or more fields\n * \n * Format:\n * - Time-windowed metrics: `<metric>_<window>:<direction>`\n * - Non-windowed metrics: `<field>:<direction>`\n * \n * - `direction`: `asc` or `desc`\n * - `window` (when applicable): `5m` `30m` `1h` `2h` `4h` `12h` `24h`\n * \n * Available fields:\n * - Time-windowed metrics: `volume_*` `fee_*` `fee_tvl_ratio_*` `apr_*`\n * - Non-windowed metrics: `tvl` `fee_pct` `bin_step` `pool_created_at` `farm_apy`\n * \n * Default: `volume_24h:desc`\n * \n * Examples:\n * - `volume_24h:desc`\n * - `fee_1h:asc`\n * - `tvl:desc`\n * @type {string}\n * @memberof GetPoolsQuery\n */\n sortBy?: string | null;\n}\n\n/**\n * Check if a given object implements the GetPoolsQuery interface.\n */\nexport function instanceOfGetPoolsQuery(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function GetPoolsQueryFromJSON(json: any): GetPoolsQuery {\n return GetPoolsQueryFromJSONTyped(json, false);\n}\n\nexport function GetPoolsQueryFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetPoolsQuery {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'filterBy': !exists(json, 'filter_by') ? undefined : json['filter_by'],\n 'page': !exists(json, 'page') ? undefined : json['page'],\n 'pageSize': !exists(json, 'page_size') ? undefined : json['page_size'],\n 'query': !exists(json, 'query') ? undefined : json['query'],\n 'sortBy': !exists(json, 'sort_by') ? undefined : json['sort_by'],\n };\n}\n\nexport function GetPoolsQueryToJSON(value?: GetPoolsQuery | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'filter_by': value.filterBy,\n 'page': value.page,\n 'page_size': value.pageSize,\n 'query': value.query,\n 'sort_by': value.sortBy,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface GroupResponse\n */\nexport interface GroupResponse {\n /**\n * \n * @type {string}\n * @memberof GroupResponse\n */\n groupName: string;\n /**\n * \n * @type {boolean}\n * @memberof GroupResponse\n */\n hasFarm: boolean;\n /**\n * \n * @type {string}\n * @memberof GroupResponse\n */\n lexicalOrderMints: string;\n /**\n * \n * @type {number}\n * @memberof GroupResponse\n */\n maxFarmApr: number;\n /**\n * \n * @type {number}\n * @memberof GroupResponse\n */\n maxFeeTvlRatio: number;\n /**\n * \n * @type {number}\n * @memberof GroupResponse\n */\n poolCount: number;\n /**\n * \n * @type {string}\n * @memberof GroupResponse\n */\n tokenX: string;\n /**\n * \n * @type {string}\n * @memberof GroupResponse\n */\n tokenY: string;\n /**\n * \n * @type {number}\n * @memberof GroupResponse\n */\n totalTvl: number;\n /**\n * \n * @type {number}\n * @memberof GroupResponse\n */\n totalVolume: number;\n}\n\n/**\n * Check if a given object implements the GroupResponse interface.\n */\nexport function instanceOfGroupResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"groupName\" in value;\n isInstance = isInstance && \"hasFarm\" in value;\n isInstance = isInstance && \"lexicalOrderMints\" in value;\n isInstance = isInstance && \"maxFarmApr\" in value;\n isInstance = isInstance && \"maxFeeTvlRatio\" in value;\n isInstance = isInstance && \"poolCount\" in value;\n isInstance = isInstance && \"tokenX\" in value;\n isInstance = isInstance && \"tokenY\" in value;\n isInstance = isInstance && \"totalTvl\" in value;\n isInstance = isInstance && \"totalVolume\" in value;\n\n return isInstance;\n}\n\nexport function GroupResponseFromJSON(json: any): GroupResponse {\n return GroupResponseFromJSONTyped(json, false);\n}\n\nexport function GroupResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): GroupResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'groupName': json['group_name'],\n 'hasFarm': json['has_farm'],\n 'lexicalOrderMints': json['lexical_order_mints'],\n 'maxFarmApr': json['max_farm_apr'],\n 'maxFeeTvlRatio': json['max_fee_tvl_ratio'],\n 'poolCount': json['pool_count'],\n 'tokenX': json['token_x'],\n 'tokenY': json['token_y'],\n 'totalTvl': json['total_tvl'],\n 'totalVolume': json['total_volume'],\n };\n}\n\nexport function GroupResponseToJSON(value?: GroupResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'group_name': value.groupName,\n 'has_farm': value.hasFarm,\n 'lexical_order_mints': value.lexicalOrderMints,\n 'max_farm_apr': value.maxFarmApr,\n 'max_fee_tvl_ratio': value.maxFeeTvlRatio,\n 'pool_count': value.poolCount,\n 'token_x': value.tokenX,\n 'token_y': value.tokenY,\n 'total_tvl': value.totalTvl,\n 'total_volume': value.totalVolume,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface OHLCVResponse\n */\nexport interface OHLCVResponse {\n /**\n * \n * @type {number}\n * @memberof OHLCVResponse\n */\n close: number;\n /**\n * \n * @type {number}\n * @memberof OHLCVResponse\n */\n high: number;\n /**\n * \n * @type {number}\n * @memberof OHLCVResponse\n */\n low: number;\n /**\n * \n * @type {number}\n * @memberof OHLCVResponse\n */\n open: number;\n /**\n * \n * @type {number}\n * @memberof OHLCVResponse\n */\n timestamp: number;\n /**\n * \n * @type {string}\n * @memberof OHLCVResponse\n */\n timestampStr: string;\n /**\n * \n * @type {number}\n * @memberof OHLCVResponse\n */\n volume: number;\n}\n\n/**\n * Check if a given object implements the OHLCVResponse interface.\n */\nexport function instanceOfOHLCVResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"close\" in value;\n isInstance = isInstance && \"high\" in value;\n isInstance = isInstance && \"low\" in value;\n isInstance = isInstance && \"open\" in value;\n isInstance = isInstance && \"timestamp\" in value;\n isInstance = isInstance && \"timestampStr\" in value;\n isInstance = isInstance && \"volume\" in value;\n\n return isInstance;\n}\n\nexport function OHLCVResponseFromJSON(json: any): OHLCVResponse {\n return OHLCVResponseFromJSONTyped(json, false);\n}\n\nexport function OHLCVResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): OHLCVResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'close': json['close'],\n 'high': json['high'],\n 'low': json['low'],\n 'open': json['open'],\n 'timestamp': json['timestamp'],\n 'timestampStr': json['timestamp_str'],\n 'volume': json['volume'],\n };\n}\n\nexport function OHLCVResponseToJSON(value?: OHLCVResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'close': value.close,\n 'high': value.high,\n 'low': value.low,\n 'open': value.open,\n 'timestamp': value.timestamp,\n 'timestamp_str': value.timestampStr,\n 'volume': value.volume,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface PaginationResponseGroupResponseDataInner\n */\nexport interface PaginationResponseGroupResponseDataInner {\n /**\n * \n * @type {string}\n * @memberof PaginationResponseGroupResponseDataInner\n */\n groupName: string;\n /**\n * \n * @type {boolean}\n * @memberof PaginationResponseGroupResponseDataInner\n */\n hasFarm: boolean;\n /**\n * \n * @type {string}\n * @memberof PaginationResponseGroupResponseDataInner\n */\n lexicalOrderMints: string;\n /**\n * \n * @type {number}\n * @memberof PaginationResponseGroupResponseDataInner\n */\n maxFarmApr: number;\n /**\n * \n * @type {number}\n * @memberof PaginationResponseGroupResponseDataInner\n */\n maxFeeTvlRatio: number;\n /**\n * \n * @type {number}\n * @memberof PaginationResponseGroupResponseDataInner\n */\n poolCount: number;\n /**\n * \n * @type {string}\n * @memberof PaginationResponseGroupResponseDataInner\n */\n tokenX: string;\n /**\n * \n * @type {string}\n * @memberof PaginationResponseGroupResponseDataInner\n */\n tokenY: string;\n /**\n * \n * @type {number}\n * @memberof PaginationResponseGroupResponseDataInner\n */\n totalTvl: number;\n /**\n * \n * @type {number}\n * @memberof PaginationResponseGroupResponseDataInner\n */\n totalVolume: number;\n}\n\n/**\n * Check if a given object implements the PaginationResponseGroupResponseDataInner interface.\n */\nexport function instanceOfPaginationResponseGroupResponseDataInner(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"groupName\" in value;\n isInstance = isInstance && \"hasFarm\" in value;\n isInstance = isInstance && \"lexicalOrderMints\" in value;\n isInstance = isInstance && \"maxFarmApr\" in value;\n isInstance = isInstance && \"maxFeeTvlRatio\" in value;\n isInstance = isInstance && \"poolCount\" in value;\n isInstance = isInstance && \"tokenX\" in value;\n isInstance = isInstance && \"tokenY\" in value;\n isInstance = isInstance && \"totalTvl\" in value;\n isInstance = isInstance && \"totalVolume\" in value;\n\n return isInstance;\n}\n\nexport function PaginationResponseGroupResponseDataInnerFromJSON(json: any): PaginationResponseGroupResponseDataInner {\n return PaginationResponseGroupResponseDataInnerFromJSONTyped(json, false);\n}\n\nexport function PaginationResponseGroupResponseDataInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginationResponseGroupResponseDataInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'groupName': json['group_name'],\n 'hasFarm': json['has_farm'],\n 'lexicalOrderMints': json['lexical_order_mints'],\n 'maxFarmApr': json['max_farm_apr'],\n 'maxFeeTvlRatio': json['max_fee_tvl_ratio'],\n 'poolCount': json['pool_count'],\n 'tokenX': json['token_x'],\n 'tokenY': json['token_y'],\n 'totalTvl': json['total_tvl'],\n 'totalVolume': json['total_volume'],\n };\n}\n\nexport function PaginationResponseGroupResponseDataInnerToJSON(value?: PaginationResponseGroupResponseDataInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'group_name': value.groupName,\n 'has_farm': value.hasFarm,\n 'lexical_order_mints': value.lexicalOrderMints,\n 'max_farm_apr': value.maxFarmApr,\n 'max_fee_tvl_ratio': value.maxFeeTvlRatio,\n 'pool_count': value.poolCount,\n 'token_x': value.tokenX,\n 'token_y': value.tokenY,\n 'total_tvl': value.totalTvl,\n 'total_volume': value.totalVolume,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { PaginationResponseGroupResponseDataInner } from './PaginationResponseGroupResponseDataInner';\nimport {\n PaginationResponseGroupResponseDataInnerFromJSON,\n PaginationResponseGroupResponseDataInnerFromJSONTyped,\n PaginationResponseGroupResponseDataInnerToJSON,\n} from './PaginationResponseGroupResponseDataInner';\n\n/**\n * \n * @export\n * @interface PaginationResponseGroupResponse\n */\nexport interface PaginationResponseGroupResponse {\n /**\n * \n * @type {number}\n * @memberof PaginationResponseGroupResponse\n */\n currentPage: number;\n /**\n * \n * @type {Array<PaginationResponseGroupResponseDataInner>}\n * @memberof PaginationResponseGroupResponse\n */\n data: Array<PaginationResponseGroupResponseDataInner>;\n /**\n * \n * @type {number}\n * @memberof PaginationResponseGroupResponse\n */\n pageSize: number;\n /**\n * \n * @type {number}\n * @memberof PaginationResponseGroupResponse\n */\n pages: number;\n /**\n * \n * @type {number}\n * @memberof PaginationResponseGroupResponse\n */\n total: number;\n}\n\n/**\n * Check if a given object implements the PaginationResponseGroupResponse interface.\n */\nexport function instanceOfPaginationResponseGroupResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"currentPage\" in value;\n isInstance = isInstance && \"data\" in value;\n isInstance = isInstance && \"pageSize\" in value;\n isInstance = isInstance && \"pages\" in value;\n isInstance = isInstance && \"total\" in value;\n\n return isInstance;\n}\n\nexport function PaginationResponseGroupResponseFromJSON(json: any): PaginationResponseGroupResponse {\n return PaginationResponseGroupResponseFromJSONTyped(json, false);\n}\n\nexport function PaginationResponseGroupResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginationResponseGroupResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'currentPage': json['current_page'],\n 'data': ((json['data'] as Array<any>).map(PaginationResponseGroupResponseDataInnerFromJSON)),\n 'pageSize': json['page_size'],\n 'pages': json['pages'],\n 'total': json['total'],\n };\n}\n\nexport function PaginationResponseGroupResponseToJSON(value?: PaginationResponseGroupResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'current_page': value.currentPage,\n 'data': ((value.data as Array<any>).map(PaginationResponseGroupResponseDataInnerToJSON)),\n 'page_size': value.pageSize,\n 'pages': value.pages,\n 'total': value.total,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { GetPools200ResponseDataInner } from './GetPools200ResponseDataInner';\nimport {\n GetPools200ResponseDataInnerFromJSON,\n GetPools200ResponseDataInnerFromJSONTyped,\n GetPools200ResponseDataInnerToJSON,\n} from './GetPools200ResponseDataInner';\n\n/**\n * \n * @export\n * @interface PaginationResponsePoolResponse\n */\nexport interface PaginationResponsePoolResponse {\n /**\n * \n * @type {number}\n * @memberof PaginationResponsePoolResponse\n */\n currentPage: number;\n /**\n * \n * @type {Array<GetPools200ResponseDataInner>}\n * @memberof PaginationResponsePoolResponse\n */\n data: Array<GetPools200ResponseDataInner>;\n /**\n * \n * @type {number}\n * @memberof PaginationResponsePoolResponse\n */\n pageSize: number;\n /**\n * \n * @type {number}\n * @memberof PaginationResponsePoolResponse\n */\n pages: number;\n /**\n * \n * @type {number}\n * @memberof PaginationResponsePoolResponse\n */\n total: number;\n}\n\n/**\n * Check if a given object implements the PaginationResponsePoolResponse interface.\n */\nexport function instanceOfPaginationResponsePoolResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"currentPage\" in value;\n isInstance = isInstance && \"data\" in value;\n isInstance = isInstance && \"pageSize\" in value;\n isInstance = isInstance && \"pages\" in value;\n isInstance = isInstance && \"total\" in value;\n\n return isInstance;\n}\n\nexport function PaginationResponsePoolResponseFromJSON(json: any): PaginationResponsePoolResponse {\n return PaginationResponsePoolResponseFromJSONTyped(json, false);\n}\n\nexport function PaginationResponsePoolResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginationResponsePoolResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'currentPage': json['current_page'],\n 'data': ((json['data'] as Array<any>).map(GetPools200ResponseDataInnerFromJSON)),\n 'pageSize': json['page_size'],\n 'pages': json['pages'],\n 'total': json['total'],\n };\n}\n\nexport function PaginationResponsePoolResponseToJSON(value?: PaginationResponsePoolResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'current_page': value.currentPage,\n 'data': ((value.data as Array<any>).map(GetPools200ResponseDataInnerToJSON)),\n 'page_size': value.pageSize,\n 'pages': value.pages,\n 'total': value.total,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { PoolConfig } from './PoolConfig';\nimport {\n PoolConfigFromJSON,\n PoolConfigFromJSONTyped,\n PoolConfigToJSON,\n} from './PoolConfig';\nimport type { TimeWindowData } from './TimeWindowData';\nimport {\n TimeWindowDataFromJSON,\n TimeWindowDataFromJSONTyped,\n TimeWindowDataToJSON,\n} from './TimeWindowData';\nimport type { TokenMetrics } from './TokenMetrics';\nimport {\n TokenMetricsFromJSON,\n TokenMetricsFromJSONTyped,\n TokenMetricsToJSON,\n} from './TokenMetrics';\nimport type { VestedLiquidity } from './VestedLiquidity';\nimport {\n VestedLiquidityFromJSON,\n VestedLiquidityFromJSONTyped,\n VestedLiquidityToJSON,\n} from './VestedLiquidity';\n\n/**\n * \n * @export\n * @interface PoolResponse\n */\nexport interface PoolResponse {\n /**\n * Address of the liquidity pair\n * @type {string}\n * @memberof PoolResponse\n */\n address: string;\n /**\n * Aplha vault\n * @type {string}\n * @memberof PoolResponse\n */\n alphaVault: string;\n /**\n * Pool created at timestamp\n * @type {number}\n * @memberof PoolResponse\n */\n createdAt: number;\n /**\n * Price of the liquidity pair\n * @type {number}\n * @memberof PoolResponse\n */\n currentPrice: number;\n /**\n * Farm reward apr\n * @type {number}\n * @memberof PoolResponse\n */\n farmApr: number;\n /**\n * Farm reward apy\n * @type {number}\n * @memberof PoolResponse\n */\n farmApy: number;\n /**\n * \n * @type {TimeWindowData}\n * @memberof PoolResponse\n */\n feeTvlRatio: TimeWindowData;\n /**\n * \n * @type {TimeWindowData}\n * @memberof PoolResponse\n */\n fees: TimeWindowData;\n /**\n * Whether the pool has a farm or not\n * @type {boolean}\n * @memberof PoolResponse\n */\n hasFarm: boolean;\n /**\n * Flag to indicate whether the pair is blacklisted\n * @type {boolean}\n * @memberof PoolResponse\n */\n isBlacklisted: boolean;\n /**\n * Launchpad of the pair\n * @type {string}\n * @memberof PoolResponse\n */\n launchpad?: string | null;\n /**\n * Name of the liquidity pair\n * @type {string}\n * @memberof PoolResponse\n */\n name: string;\n /**\n * Permanently locked liquidity inside the pool\n * @type {number}\n * @memberof PoolResponse\n */\n permanentLockLiquidity: number;\n /**\n * \n * @type {PoolConfig}\n * @memberof PoolResponse\n */\n poolConfig: PoolConfig;\n /**\n * \n * @type {TimeWindowData}\n * @memberof PoolResponse\n */\n protocolFees: TimeWindowData;\n /**\n * Tags of the pair\n * @type {Array<string>}\n * @memberof PoolResponse\n */\n tags: Array<string>;\n /**\n * \n * @type {TokenMetrics}\n * @memberof PoolResponse\n */\n tokenX: TokenMetrics;\n /**\n * Amount of token X in the pool\n * @type {number}\n * @memberof PoolResponse\n */\n tokenXAmount: number;\n /**\n * \n * @type {TokenMetrics}\n * @memberof PoolResponse\n */\n tokenY: TokenMetrics;\n /**\n * Amount of token Y in the pool\n * @type {number}\n * @memberof PoolResponse\n */\n tokenYAmount: number;\n /**\n * Total liquidity the liquidity pair holding. Also known as Total Value Locked\n * @type {number}\n * @memberof PoolResponse\n */\n tvl: number;\n /**\n * Vault X\n * @type {string}\n * @memberof PoolResponse\n */\n vaultX: string;\n /**\n * Vault Y\n * @type {string}\n * @memberof PoolResponse\n */\n vaultY: string;\n /**\n * \n * @type {VestedLiquidity}\n * @memberof PoolResponse\n */\n vestedLiquidity: VestedLiquidity;\n /**\n * \n * @type {TimeWindowData}\n * @memberof PoolResponse\n */\n volume: TimeWindowData;\n}\n\n/**\n * Check if a given object implements the PoolResponse interface.\n */\nexport function instanceOfPoolResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"address\" in value;\n isInstance = isInstance && \"alphaVault\" in value;\n isInstance = isInstance && \"createdAt\" in value;\n isInstance = isInstance && \"currentPrice\" in value;\n isInstance = isInstance && \"farmApr\" in value;\n isInstance = isInstance && \"farmApy\" in value;\n isInstance = isInstance && \"feeTvlRatio\" in value;\n isInstance = isInstance && \"fees\" in value;\n isInstance = isInstance && \"hasFarm\" in value;\n isInstance = isInstance && \"isBlacklisted\" in value;\n isInstance = isInstance && \"name\" in value;\n isInstance = isInstance && \"permanentLockLiquidity\" in value;\n isInstance = isInstance && \"poolConfig\" in value;\n isInstance = isInstance && \"protocolFees\" in value;\n isInstance = isInstance && \"tags\" in value;\n isInstance = isInstance && \"tokenX\" in value;\n isInstance = isInstance && \"tokenXAmount\" in value;\n isInstance = isInstance && \"tokenY\" in value;\n isInstance = isInstance && \"tokenYAmount\" in value;\n isInstance = isInstance && \"tvl\" in value;\n isInstance = isInstance && \"vaultX\" in value;\n isInstance = isInstance && \"vaultY\" in value;\n isInstance = isInstance && \"vestedLiquidity\" in value;\n isInstance = isInstance && \"volume\" in value;\n\n return isInstance;\n}\n\nexport function PoolResponseFromJSON(json: any): PoolResponse {\n return PoolResponseFromJSONTyped(json, false);\n}\n\nexport function PoolResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): PoolResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'address': json['address'],\n 'alphaVault': json['alpha_vault'],\n 'createdAt': json['created_at'],\n 'currentPrice': json['current_price'],\n 'farmApr': json['farm_apr'],\n 'farmApy': json['farm_apy'],\n 'feeTvlRatio': TimeWindowDataFromJSON(json['fee_tvl_ratio']),\n 'fees': TimeWindowDataFromJSON(json['fees']),\n 'hasFarm': json['has_farm'],\n 'isBlacklisted': json['is_blacklisted'],\n 'launchpad': !exists(json, 'launchpad') ? undefined : json['launchpad'],\n 'name': json['name'],\n 'permanentLockLiquidity': json['permanent_lock_liquidity'],\n 'poolConfig': PoolConfigFromJSON(json['pool_config']),\n 'protocolFees': TimeWindowDataFromJSON(json['protocol_fees']),\n 'tags': json['tags'],\n 'tokenX': TokenMetricsFromJSON(json['token_x']),\n 'tokenXAmount': json['token_x_amount'],\n 'tokenY': TokenMetricsFromJSON(json['token_y']),\n 'tokenYAmount': json['token_y_amount'],\n 'tvl': json['tvl'],\n 'vaultX': json['vault_x'],\n 'vaultY': json['vault_y'],\n 'vestedLiquidity': VestedLiquidityFromJSON(json['vested_liquidity']),\n 'volume': TimeWindowDataFromJSON(json['volume']),\n };\n}\n\nexport function PoolResponseToJSON(value?: PoolResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'address': value.address,\n 'alpha_vault': value.alphaVault,\n 'created_at': value.createdAt,\n 'current_price': value.currentPrice,\n 'farm_apr': value.farmApr,\n 'farm_apy': value.farmApy,\n 'fee_tvl_ratio': TimeWindowDataToJSON(value.feeTvlRatio),\n 'fees': TimeWindowDataToJSON(value.fees),\n 'has_farm': value.hasFarm,\n 'is_blacklisted': value.isBlacklisted,\n 'launchpad': value.launchpad,\n 'name': value.name,\n 'permanent_lock_liquidity': value.permanentLockLiquidity,\n 'pool_config': PoolConfigToJSON(value.poolConfig),\n 'protocol_fees': TimeWindowDataToJSON(value.protocolFees),\n 'tags': value.tags,\n 'token_x': TokenMetricsToJSON(value.tokenX),\n 'token_x_amount': value.tokenXAmount,\n 'token_y': TokenMetricsToJSON(value.tokenY),\n 'token_y_amount': value.tokenYAmount,\n 'tvl': value.tvl,\n 'vault_x': value.vaultX,\n 'vault_y': value.vaultY,\n 'vested_liquidity': VestedLiquidityToJSON(value.vestedLiquidity),\n 'volume': TimeWindowDataToJSON(value.volume),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const PoolsSortBy = {\n Tvl: 'tvl',\n Volume24h: 'volume24h',\n Fee24h: 'fee24h'\n} as const;\nexport type PoolsSortBy = typeof PoolsSortBy[keyof typeof PoolsSortBy];\n\n\nexport function PoolsSortByFromJSON(json: any): PoolsSortBy {\n return PoolsSortByFromJSONTyped(json, false);\n}\n\nexport function PoolsSortByFromJSONTyped(json: any, ignoreDiscriminator: boolean): PoolsSortBy {\n return json as PoolsSortBy;\n}\n\nexport function PoolsSortByToJSON(value?: PoolsSortBy | null): any {\n return value as any;\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface PortfolioResponse\n */\nexport interface PortfolioResponse {\n /**\n * \n * @type {number}\n * @memberof PortfolioResponse\n */\n closedPositionsCount: number;\n /**\n * \n * @type {number}\n * @memberof PortfolioResponse\n */\n openPositionsCount: number;\n /**\n * \n * @type {string}\n * @memberof PortfolioResponse\n */\n poolAddress: string;\n /**\n * \n * @type {number}\n * @memberof PortfolioResponse\n */\n positionsCount: number;\n /**\n * \n * @type {number}\n * @memberof PortfolioResponse\n */\n totalClaimedFeesUsd: number;\n /**\n * \n * @type {number}\n * @memberof PortfolioResponse\n */\n totalClaimedFeesX: number;\n /**\n * \n * @type {number}\n * @memberof PortfolioResponse\n */\n totalClaimedFeesY: number;\n /**\n * \n * @type {number}\n * @memberof PortfolioResponse\n */\n totalDepositsUsd: number;\n /**\n * \n * @type {number}\n * @memberof PortfolioResponse\n */\n totalDepositsX: number;\n /**\n * \n * @type {number}\n * @memberof PortfolioResponse\n */\n totalDepositsY: number;\n /**\n * \n * @type {number}\n * @memberof PortfolioResponse\n */\n totalWithdrawsUsd: number;\n /**\n * \n * @type {number}\n * @memberof PortfolioResponse\n */\n totalWithdrawsX: number;\n /**\n * \n * @type {number}\n * @memberof PortfolioResponse\n */\n totalWithdrawsY: number;\n}\n\n/**\n * Check if a given object implements the PortfolioResponse interface.\n */\nexport function instanceOfPortfolioResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"closedPositionsCount\" in value;\n isInstance = isInstance && \"openPositionsCount\" in value;\n isInstance = isInstance && \"poolAddress\" in value;\n isInstance = isInstance && \"positionsCount\" in value;\n isInstance = isInstance && \"totalClaimedFeesUsd\" in value;\n isInstance = isInstance && \"totalClaimedFeesX\" in value;\n isInstance = isInstance && \"totalClaimedFeesY\" in value;\n isInstance = isInstance && \"totalDepositsUsd\" in value;\n isInstance = isInstance && \"totalDepositsX\" in value;\n isInstance = isInstance && \"totalDepositsY\" in value;\n isInstance = isInstance && \"totalWithdrawsUsd\" in value;\n isInstance = isInstance && \"totalWithdrawsX\" in value;\n isInstance = isInstance && \"totalWithdrawsY\" in value;\n\n return isInstance;\n}\n\nexport function PortfolioResponseFromJSON(json: any): PortfolioResponse {\n return PortfolioResponseFromJSONTyped(json, false);\n}\n\nexport function PortfolioResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): PortfolioResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'closedPositionsCount': json['closed_positions_count'],\n 'openPositionsCount': json['open_positions_count'],\n 'poolAddress': json['pool_address'],\n 'positionsCount': json['positions_count'],\n 'totalClaimedFeesUsd': json['total_claimed_fees_usd'],\n 'totalClaimedFeesX': json['total_claimed_fees_x'],\n 'totalClaimedFeesY': json['total_claimed_fees_y'],\n 'totalDepositsUsd': json['total_deposits_usd'],\n 'totalDepositsX': json['total_deposits_x'],\n 'totalDepositsY': json['total_deposits_y'],\n 'totalWithdrawsUsd': json['total_withdraws_usd'],\n 'totalWithdrawsX': json['total_withdraws_x'],\n 'totalWithdrawsY': json['total_withdraws_y'],\n };\n}\n\nexport function PortfolioResponseToJSON(value?: PortfolioResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'closed_positions_count': value.closedPositionsCount,\n 'open_positions_count': value.openPositionsCount,\n 'pool_address': value.poolAddress,\n 'positions_count': value.positionsCount,\n 'total_claimed_fees_usd': value.totalClaimedFeesUsd,\n 'total_claimed_fees_x': value.totalClaimedFeesX,\n 'total_claimed_fees_y': value.totalClaimedFeesY,\n 'total_deposits_usd': value.totalDepositsUsd,\n 'total_deposits_x': value.totalDepositsX,\n 'total_deposits_y': value.totalDepositsY,\n 'total_withdraws_usd': value.totalWithdrawsUsd,\n 'total_withdraws_x': value.totalWithdrawsX,\n 'total_withdraws_y': value.totalWithdrawsY,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const PositionStatus = {\n Open: 'open',\n Closed: 'closed'\n} as const;\nexport type PositionStatus = typeof PositionStatus[keyof typeof PositionStatus];\n\n\nexport function PositionStatusFromJSON(json: any): PositionStatus {\n return PositionStatusFromJSONTyped(json, false);\n}\n\nexport function PositionStatusFromJSONTyped(json: any, ignoreDiscriminator: boolean): PositionStatus {\n return json as PositionStatus;\n}\n\nexport function PositionStatusToJSON(value?: PositionStatus | null): any {\n return value as any;\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { AmountTotals } from './AmountTotals';\nimport {\n AmountTotalsFromJSON,\n AmountTotalsFromJSONTyped,\n AmountTotalsToJSON,\n} from './AmountTotals';\nimport type { CurrentPosition } from './CurrentPosition';\nimport {\n CurrentPositionFromJSON,\n CurrentPositionFromJSONTyped,\n CurrentPositionToJSON,\n} from './CurrentPosition';\n\n/**\n * \n * @export\n * @interface PositionsResponse\n */\nexport interface PositionsResponse {\n /**\n * \n * @type {number}\n * @memberof PositionsResponse\n */\n closedAt?: number | null;\n /**\n * \n * @type {number}\n * @memberof PositionsResponse\n */\n createdAt: number;\n /**\n * \n * @type {CurrentPosition}\n * @memberof PositionsResponse\n */\n currentPosition?: CurrentPosition | null;\n /**\n * \n * @type {boolean}\n * @memberof PositionsResponse\n */\n isClosed: boolean;\n /**\n * \n * @type {number}\n * @memberof PositionsResponse\n */\n pnl: number;\n /**\n * \n * @type {number}\n * @memberof PositionsResponse\n */\n pnlChangePct: number;\n /**\n * \n * @type {string}\n * @memberof PositionsResponse\n */\n poolAddress: string;\n /**\n * \n * @type {string}\n * @memberof PositionsResponse\n */\n positionAddress: string;\n /**\n * \n * @type {AmountTotals}\n * @memberof PositionsResponse\n */\n totalClaimedFees: AmountTotals;\n /**\n * \n * @type {AmountTotals}\n * @memberof PositionsResponse\n */\n totalDeposits: AmountTotals;\n /**\n * \n * @type {AmountTotals}\n * @memberof PositionsResponse\n */\n totalWithdraws: AmountTotals;\n}\n\n/**\n * Check if a given object implements the PositionsResponse interface.\n */\nexport function instanceOfPositionsResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"createdAt\" in value;\n isInstance = isInstance && \"isClosed\" in value;\n isInstance = isInstance && \"pnl\" in value;\n isInstance = isInstance && \"pnlChangePct\" in value;\n isInstance = isInstance && \"poolAddress\" in value;\n isInstance = isInstance && \"positionAddress\" in value;\n isInstance = isInstance && \"totalClaimedFees\" in value;\n isInstance = isInstance && \"totalDeposits\" in value;\n isInstance = isInstance && \"totalWithdraws\" in value;\n\n return isInstance;\n}\n\nexport function PositionsResponseFromJSON(json: any): PositionsResponse {\n return PositionsResponseFromJSONTyped(json, false);\n}\n\nexport function PositionsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): PositionsResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'closedAt': !exists(json, 'closed_at') ? undefined : json['closed_at'],\n 'createdAt': json['created_at'],\n 'currentPosition': !exists(json, 'current_position') ? undefined : CurrentPositionFromJSON(json['current_position']),\n 'isClosed': json['is_closed'],\n 'pnl': json['pnl'],\n 'pnlChangePct': json['pnl_change_pct'],\n 'poolAddress': json['pool_address'],\n 'positionAddress': json['position_address'],\n 'totalClaimedFees': AmountTotalsFromJSON(json['total_claimed_fees']),\n 'totalDeposits': AmountTotalsFromJSON(json['total_deposits']),\n 'totalWithdraws': AmountTotalsFromJSON(json['total_withdraws']),\n };\n}\n\nexport function PositionsResponseToJSON(value?: PositionsResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'closed_at': value.closedAt,\n 'created_at': value.createdAt,\n 'current_position': CurrentPositionToJSON(value.currentPosition),\n 'is_closed': value.isClosed,\n 'pnl': value.pnl,\n 'pnl_change_pct': value.pnlChangePct,\n 'pool_address': value.poolAddress,\n 'position_address': value.positionAddress,\n 'total_claimed_fees': AmountTotalsToJSON(value.totalClaimedFees),\n 'total_deposits': AmountTotalsToJSON(value.totalDeposits),\n 'total_withdraws': AmountTotalsToJSON(value.totalWithdraws),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ProtocolMetricsResponse\n */\nexport interface ProtocolMetricsResponse {\n /**\n * \n * @type {number}\n * @memberof ProtocolMetricsResponse\n */\n fee24h: number;\n /**\n * \n * @type {number}\n * @memberof ProtocolMetricsResponse\n */\n totalFees: number;\n /**\n * \n * @type {number}\n * @memberof ProtocolMetricsResponse\n */\n totalPools: number;\n /**\n * \n * @type {number}\n * @memberof ProtocolMetricsResponse\n */\n totalTvl: number;\n /**\n * \n * @type {number}\n * @memberof ProtocolMetricsResponse\n */\n totalVolume: number;\n /**\n * \n * @type {number}\n * @memberof ProtocolMetricsResponse\n */\n volume24h: number;\n}\n\n/**\n * Check if a given object implements the ProtocolMetricsResponse interface.\n */\nexport function instanceOfProtocolMetricsResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"fee24h\" in value;\n isInstance = isInstance && \"totalFees\" in value;\n isInstance = isInstance && \"totalPools\" in value;\n isInstance = isInstance && \"totalTvl\" in value;\n isInstance = isInstance && \"totalVolume\" in value;\n isInstance = isInstance && \"volume24h\" in value;\n\n return isInstance;\n}\n\nexport function ProtocolMetricsResponseFromJSON(json: any): ProtocolMetricsResponse {\n return ProtocolMetricsResponseFromJSONTyped(json, false);\n}\n\nexport function ProtocolMetricsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProtocolMetricsResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'fee24h': json['fee_24h'],\n 'totalFees': json['total_fees'],\n 'totalPools': json['total_pools'],\n 'totalTvl': json['total_tvl'],\n 'totalVolume': json['total_volume'],\n 'volume24h': json['volume_24h'],\n };\n}\n\nexport function ProtocolMetricsResponseToJSON(value?: ProtocolMetricsResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'fee_24h': value.fee24h,\n 'total_fees': value.totalFees,\n 'total_pools': value.totalPools,\n 'total_tvl': value.totalTvl,\n 'total_volume': value.totalVolume,\n 'volume_24h': value.volume24h,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const SortDirection = {\n Asc: 'asc',\n Desc: 'desc'\n} as const;\nexport type SortDirection = typeof SortDirection[keyof typeof SortDirection];\n\n\nexport function SortDirectionFromJSON(json: any): SortDirection {\n return SortDirectionFromJSONTyped(json, false);\n}\n\nexport function SortDirectionFromJSONTyped(json: any, ignoreDiscriminator: boolean): SortDirection {\n return json as SortDirection;\n}\n\nexport function SortDirectionToJSON(value?: SortDirection | null): any {\n return value as any;\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const TimeFrame = {\n _5m: '5m',\n _30m: '30m',\n _1h: '1h',\n _2h: '2h',\n _4h: '4h',\n _12h: '12h',\n _24h: '24h'\n} as const;\nexport type TimeFrame = typeof TimeFrame[keyof typeof TimeFrame];\n\n\nexport function TimeFrameFromJSON(json: any): TimeFrame {\n return TimeFrameFromJSONTyped(json, false);\n}\n\nexport function TimeFrameFromJSONTyped(json: any, ignoreDiscriminator: boolean): TimeFrame {\n return json as TimeFrame;\n}\n\nexport function TimeFrameToJSON(value?: TimeFrame | null): any {\n return value as any;\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TimeseriesResponseOHLCVResponseDataInner\n */\nexport interface TimeseriesResponseOHLCVResponseDataInner {\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseOHLCVResponseDataInner\n */\n close: number;\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseOHLCVResponseDataInner\n */\n high: number;\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseOHLCVResponseDataInner\n */\n low: number;\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseOHLCVResponseDataInner\n */\n open: number;\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseOHLCVResponseDataInner\n */\n timestamp: number;\n /**\n * \n * @type {string}\n * @memberof TimeseriesResponseOHLCVResponseDataInner\n */\n timestampStr: string;\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseOHLCVResponseDataInner\n */\n volume: number;\n}\n\n/**\n * Check if a given object implements the TimeseriesResponseOHLCVResponseDataInner interface.\n */\nexport function instanceOfTimeseriesResponseOHLCVResponseDataInner(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"close\" in value;\n isInstance = isInstance && \"high\" in value;\n isInstance = isInstance && \"low\" in value;\n isInstance = isInstance && \"open\" in value;\n isInstance = isInstance && \"timestamp\" in value;\n isInstance = isInstance && \"timestampStr\" in value;\n isInstance = isInstance && \"volume\" in value;\n\n return isInstance;\n}\n\nexport function TimeseriesResponseOHLCVResponseDataInnerFromJSON(json: any): TimeseriesResponseOHLCVResponseDataInner {\n return TimeseriesResponseOHLCVResponseDataInnerFromJSONTyped(json, false);\n}\n\nexport function TimeseriesResponseOHLCVResponseDataInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): TimeseriesResponseOHLCVResponseDataInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'close': json['close'],\n 'high': json['high'],\n 'low': json['low'],\n 'open': json['open'],\n 'timestamp': json['timestamp'],\n 'timestampStr': json['timestamp_str'],\n 'volume': json['volume'],\n };\n}\n\nexport function TimeseriesResponseOHLCVResponseDataInnerToJSON(value?: TimeseriesResponseOHLCVResponseDataInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'close': value.close,\n 'high': value.high,\n 'low': value.low,\n 'open': value.open,\n 'timestamp': value.timestamp,\n 'timestamp_str': value.timestampStr,\n 'volume': value.volume,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { TimeseriesResponseOHLCVResponseDataInner } from './TimeseriesResponseOHLCVResponseDataInner';\nimport {\n TimeseriesResponseOHLCVResponseDataInnerFromJSON,\n TimeseriesResponseOHLCVResponseDataInnerFromJSONTyped,\n TimeseriesResponseOHLCVResponseDataInnerToJSON,\n} from './TimeseriesResponseOHLCVResponseDataInner';\n\n/**\n * \n * @export\n * @interface TimeseriesResponseOHLCVResponse\n */\nexport interface TimeseriesResponseOHLCVResponse {\n /**\n * \n * @type {Array<TimeseriesResponseOHLCVResponseDataInner>}\n * @memberof TimeseriesResponseOHLCVResponse\n */\n data: Array<TimeseriesResponseOHLCVResponseDataInner>;\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseOHLCVResponse\n */\n endTime: number;\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseOHLCVResponse\n */\n startTime: number;\n /**\n * \n * @type {string}\n * @memberof TimeseriesResponseOHLCVResponse\n */\n timeframe?: string | null;\n}\n\n/**\n * Check if a given object implements the TimeseriesResponseOHLCVResponse interface.\n */\nexport function instanceOfTimeseriesResponseOHLCVResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"data\" in value;\n isInstance = isInstance && \"endTime\" in value;\n isInstance = isInstance && \"startTime\" in value;\n\n return isInstance;\n}\n\nexport function TimeseriesResponseOHLCVResponseFromJSON(json: any): TimeseriesResponseOHLCVResponse {\n return TimeseriesResponseOHLCVResponseFromJSONTyped(json, false);\n}\n\nexport function TimeseriesResponseOHLCVResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): TimeseriesResponseOHLCVResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'data': ((json['data'] as Array<any>).map(TimeseriesResponseOHLCVResponseDataInnerFromJSON)),\n 'endTime': json['end_time'],\n 'startTime': json['start_time'],\n 'timeframe': !exists(json, 'timeframe') ? undefined : json['timeframe'],\n };\n}\n\nexport function TimeseriesResponseOHLCVResponseToJSON(value?: TimeseriesResponseOHLCVResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'data': ((value.data as Array<any>).map(TimeseriesResponseOHLCVResponseDataInnerToJSON)),\n 'end_time': value.endTime,\n 'start_time': value.startTime,\n 'timeframe': value.timeframe,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TimeseriesResponseVolumeHistoryResponseDataInner\n */\nexport interface TimeseriesResponseVolumeHistoryResponseDataInner {\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseVolumeHistoryResponseDataInner\n */\n fees: number;\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseVolumeHistoryResponseDataInner\n */\n protocolFees: number;\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseVolumeHistoryResponseDataInner\n */\n timestamp: number;\n /**\n * \n * @type {string}\n * @memberof TimeseriesResponseVolumeHistoryResponseDataInner\n */\n timestampStr: string;\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseVolumeHistoryResponseDataInner\n */\n volume: number;\n}\n\n/**\n * Check if a given object implements the TimeseriesResponseVolumeHistoryResponseDataInner interface.\n */\nexport function instanceOfTimeseriesResponseVolumeHistoryResponseDataInner(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"fees\" in value;\n isInstance = isInstance && \"protocolFees\" in value;\n isInstance = isInstance && \"timestamp\" in value;\n isInstance = isInstance && \"timestampStr\" in value;\n isInstance = isInstance && \"volume\" in value;\n\n return isInstance;\n}\n\nexport function TimeseriesResponseVolumeHistoryResponseDataInnerFromJSON(json: any): TimeseriesResponseVolumeHistoryResponseDataInner {\n return TimeseriesResponseVolumeHistoryResponseDataInnerFromJSONTyped(json, false);\n}\n\nexport function TimeseriesResponseVolumeHistoryResponseDataInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): TimeseriesResponseVolumeHistoryResponseDataInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'fees': json['fees'],\n 'protocolFees': json['protocol_fees'],\n 'timestamp': json['timestamp'],\n 'timestampStr': json['timestamp_str'],\n 'volume': json['volume'],\n };\n}\n\nexport function TimeseriesResponseVolumeHistoryResponseDataInnerToJSON(value?: TimeseriesResponseVolumeHistoryResponseDataInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'fees': value.fees,\n 'protocol_fees': value.protocolFees,\n 'timestamp': value.timestamp,\n 'timestamp_str': value.timestampStr,\n 'volume': value.volume,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { TimeseriesResponseVolumeHistoryResponseDataInner } from './TimeseriesResponseVolumeHistoryResponseDataInner';\nimport {\n TimeseriesResponseVolumeHistoryResponseDataInnerFromJSON,\n TimeseriesResponseVolumeHistoryResponseDataInnerFromJSONTyped,\n TimeseriesResponseVolumeHistoryResponseDataInnerToJSON,\n} from './TimeseriesResponseVolumeHistoryResponseDataInner';\n\n/**\n * \n * @export\n * @interface TimeseriesResponseVolumeHistoryResponse\n */\nexport interface TimeseriesResponseVolumeHistoryResponse {\n /**\n * \n * @type {Array<TimeseriesResponseVolumeHistoryResponseDataInner>}\n * @memberof TimeseriesResponseVolumeHistoryResponse\n */\n data: Array<TimeseriesResponseVolumeHistoryResponseDataInner>;\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseVolumeHistoryResponse\n */\n endTime: number;\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseVolumeHistoryResponse\n */\n startTime: number;\n /**\n * \n * @type {string}\n * @memberof TimeseriesResponseVolumeHistoryResponse\n */\n timeframe?: string | null;\n}\n\n/**\n * Check if a given object implements the TimeseriesResponseVolumeHistoryResponse interface.\n */\nexport function instanceOfTimeseriesResponseVolumeHistoryResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"data\" in value;\n isInstance = isInstance && \"endTime\" in value;\n isInstance = isInstance && \"startTime\" in value;\n\n return isInstance;\n}\n\nexport function TimeseriesResponseVolumeHistoryResponseFromJSON(json: any): TimeseriesResponseVolumeHistoryResponse {\n return TimeseriesResponseVolumeHistoryResponseFromJSONTyped(json, false);\n}\n\nexport function TimeseriesResponseVolumeHistoryResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): TimeseriesResponseVolumeHistoryResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'data': ((json['data'] as Array<any>).map(TimeseriesResponseVolumeHistoryResponseDataInnerFromJSON)),\n 'endTime': json['end_time'],\n 'startTime': json['start_time'],\n 'timeframe': !exists(json, 'timeframe') ? undefined : json['timeframe'],\n };\n}\n\nexport function TimeseriesResponseVolumeHistoryResponseToJSON(value?: TimeseriesResponseVolumeHistoryResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'data': ((value.data as Array<any>).map(TimeseriesResponseVolumeHistoryResponseDataInnerToJSON)),\n 'end_time': value.endTime,\n 'start_time': value.startTime,\n 'timeframe': value.timeframe,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface VolumeHistoryResponse\n */\nexport interface VolumeHistoryResponse {\n /**\n * \n * @type {number}\n * @memberof VolumeHistoryResponse\n */\n fees: number;\n /**\n * \n * @type {number}\n * @memberof VolumeHistoryResponse\n */\n protocolFees: number;\n /**\n * \n * @type {number}\n * @memberof VolumeHistoryResponse\n */\n timestamp: number;\n /**\n * \n * @type {string}\n * @memberof VolumeHistoryResponse\n */\n timestampStr: string;\n /**\n * \n * @type {number}\n * @memberof VolumeHistoryResponse\n */\n volume: number;\n}\n\n/**\n * Check if a given object implements the VolumeHistoryResponse interface.\n */\nexport function instanceOfVolumeHistoryResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"fees\" in value;\n isInstance = isInstance && \"protocolFees\" in value;\n isInstance = isInstance && \"timestamp\" in value;\n isInstance = isInstance && \"timestampStr\" in value;\n isInstance = isInstance && \"volume\" in value;\n\n return isInstance;\n}\n\nexport function VolumeHistoryResponseFromJSON(json: any): VolumeHistoryResponse {\n return VolumeHistoryResponseFromJSONTyped(json, false);\n}\n\nexport function VolumeHistoryResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): VolumeHistoryResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'fees': json['fees'],\n 'protocolFees': json['protocol_fees'],\n 'timestamp': json['timestamp'],\n 'timestampStr': json['timestamp_str'],\n 'volume': json['volume'],\n };\n}\n\nexport function VolumeHistoryResponseToJSON(value?: VolumeHistoryResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'fees': value.fees,\n 'protocol_fees': value.protocolFees,\n 'timestamp': value.timestamp,\n 'timestamp_str': value.timestampStr,\n 'volume': value.volume,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ErrorResponse,\n GetPools200Response,\n PaginationResponseGroupResponse,\n PaginationResponsePoolResponse,\n PoolResponse,\n TimeFrame,\n TimeseriesResponseOHLCVResponse,\n TimeseriesResponseVolumeHistoryResponse,\n} from '../models/index';\nimport {\n ErrorResponseFromJSON,\n ErrorResponseToJSON,\n GetPools200ResponseFromJSON,\n GetPools200ResponseToJSON,\n PaginationResponseGroupResponseFromJSON,\n PaginationResponseGroupResponseToJSON,\n PaginationResponsePoolResponseFromJSON,\n PaginationResponsePoolResponseToJSON,\n PoolResponseFromJSON,\n PoolResponseToJSON,\n TimeFrameFromJSON,\n TimeFrameToJSON,\n TimeseriesResponseOHLCVResponseFromJSON,\n TimeseriesResponseOHLCVResponseToJSON,\n TimeseriesResponseVolumeHistoryResponseFromJSON,\n TimeseriesResponseVolumeHistoryResponseToJSON,\n} from '../models/index';\n\nexport interface GetGroupRequest {\n lexicalOrderMints: string;\n page?: number | null;\n pageSize?: number | null;\n query?: string | null;\n sortBy?: string | null;\n filterBy?: string | null;\n}\n\nexport interface GetGroupsRequest {\n page?: number | null;\n pageSize?: number | null;\n query?: string | null;\n sortBy?: string | null;\n filterBy?: string | null;\n volumeTw?: string | null;\n feeTvlRatioTw?: string | null;\n}\n\nexport interface GetHistoricalVolumeRequest {\n address: string;\n timeframe?: TimeFrame | null;\n startTime?: number;\n endTime?: number;\n}\n\nexport interface GetOHLCVRequest {\n address: string;\n timeframe?: string;\n startTime?: number;\n endTime?: number;\n}\n\nexport interface GetPoolRequest {\n address: string;\n}\n\nexport interface GetPoolsRequest {\n page?: number | null;\n pageSize?: number | null;\n query?: string | null;\n sortBy?: string | null;\n filterBy?: string | null;\n}\n\n/**\n * \n */\nexport class PoolsApi extends runtime.BaseAPI {\n\n /**\n * Returns a paginated list of pools that belong to a specific pool group\n * Group\n */\n async getGroupRaw(requestParameters: GetGroupRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PaginationResponsePoolResponse>> {\n if (requestParameters.lexicalOrderMints === null || requestParameters.lexicalOrderMints === undefined) {\n throw new runtime.RequiredError('lexicalOrderMints','Required parameter requestParameters.lexicalOrderMints was null or undefined when calling getGroup.');\n }\n\n const queryParameters: any = {};\n\n if (requestParameters.page !== undefined) {\n queryParameters['page'] = requestParameters.page;\n }\n\n if (requestParameters.pageSize !== undefined) {\n queryParameters['page_size'] = requestParameters.pageSize;\n }\n\n if (requestParameters.query !== undefined) {\n queryParameters['query'] = requestParameters.query;\n }\n\n if (requestParameters.sortBy !== undefined) {\n queryParameters['sort_by'] = requestParameters.sortBy;\n }\n\n if (requestParameters.filterBy !== undefined) {\n queryParameters['filter_by'] = requestParameters.filterBy;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/pools/groups/{lexical_order_mints}`.replace(`{${\"lexical_order_mints\"}}`, encodeURIComponent(String(requestParameters.lexicalOrderMints))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PaginationResponsePoolResponseFromJSON(jsonValue));\n }\n\n /**\n * Returns a paginated list of pools that belong to a specific pool group\n * Group\n */\n async getGroup(requestParameters: GetGroupRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PaginationResponsePoolResponse> {\n const response = await this.getGroupRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Returns a paginated list of pool groups\n * Groups\n */\n async getGroupsRaw(requestParameters: GetGroupsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PaginationResponseGroupResponse>> {\n const queryParameters: any = {};\n\n if (requestParameters.page !== undefined) {\n queryParameters['page'] = requestParameters.page;\n }\n\n if (requestParameters.pageSize !== undefined) {\n queryParameters['page_size'] = requestParameters.pageSize;\n }\n\n if (requestParameters.query !== undefined) {\n queryParameters['query'] = requestParameters.query;\n }\n\n if (requestParameters.sortBy !== undefined) {\n queryParameters['sort_by'] = requestParameters.sortBy;\n }\n\n if (requestParameters.filterBy !== undefined) {\n queryParameters['filter_by'] = requestParameters.filterBy;\n }\n\n if (requestParameters.volumeTw !== undefined) {\n queryParameters['volume_tw'] = requestParameters.volumeTw;\n }\n\n if (requestParameters.feeTvlRatioTw !== undefined) {\n queryParameters['fee_tvl_ratio_tw'] = requestParameters.feeTvlRatioTw;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/pools/groups`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PaginationResponseGroupResponseFromJSON(jsonValue));\n }\n\n /**\n * Returns a paginated list of pool groups\n * Groups\n */\n async getGroups(requestParameters: GetGroupsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PaginationResponseGroupResponse> {\n const response = await this.getGroupsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Returns historical volume for a pool aggregated into time buckets **Notes** - If both `start_time` and `end_time` are provided, the result covers the range `[start_time, end_time]` - If only one of `start_time` or `end_time` is provided, the missing bound is inferred using the selected `timeframe` - If neither is provided, a default range is used based on `timeframe`\n * Historical Volume\n */\n async getHistoricalVolumeRaw(requestParameters: GetHistoricalVolumeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TimeseriesResponseVolumeHistoryResponse>> {\n if (requestParameters.address === null || requestParameters.address === undefined) {\n throw new runtime.RequiredError('address','Required parameter requestParameters.address was null or undefined when calling getHistoricalVolume.');\n }\n\n const queryParameters: any = {};\n\n if (requestParameters.timeframe !== undefined) {\n queryParameters['timeframe'] = requestParameters.timeframe;\n }\n\n if (requestParameters.startTime !== undefined) {\n queryParameters['start_time'] = requestParameters.startTime;\n }\n\n if (requestParameters.endTime !== undefined) {\n queryParameters['end_time'] = requestParameters.endTime;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/pools/{address}/volume/history`.replace(`{${\"address\"}}`, encodeURIComponent(String(requestParameters.address))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TimeseriesResponseVolumeHistoryResponseFromJSON(jsonValue));\n }\n\n /**\n * Returns historical volume for a pool aggregated into time buckets **Notes** - If both `start_time` and `end_time` are provided, the result covers the range `[start_time, end_time]` - If only one of `start_time` or `end_time` is provided, the missing bound is inferred using the selected `timeframe` - If neither is provided, a default range is used based on `timeframe`\n * Historical Volume\n */\n async getHistoricalVolume(requestParameters: GetHistoricalVolumeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TimeseriesResponseVolumeHistoryResponse> {\n const response = await this.getHistoricalVolumeRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Returns OHLCV candles for a single pool over a time range **Notes** - If both `start_time` and `end_time` are provided, candles are returned in the range `[start_time, end_time]` - If only one of `start_time` or `end_time` is provided, the missing bound is inferred using the selected `timeframe` - If neither is provided, a default range is used based on `timeframe`\n * OHLCV\n */\n async getOHLCVRaw(requestParameters: GetOHLCVRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TimeseriesResponseOHLCVResponse>> {\n if (requestParameters.address === null || requestParameters.address === undefined) {\n throw new runtime.RequiredError('address','Required parameter requestParameters.address was null or undefined when calling getOHLCV.');\n }\n\n const queryParameters: any = {};\n\n if (requestParameters.timeframe !== undefined) {\n queryParameters['timeframe'] = requestParameters.timeframe;\n }\n\n if (requestParameters.startTime !== undefined) {\n queryParameters['start_time'] = requestParameters.startTime;\n }\n\n if (requestParameters.endTime !== undefined) {\n queryParameters['end_time'] = requestParameters.endTime;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/pools/{address}/ohlcv`.replace(`{${\"address\"}}`, encodeURIComponent(String(requestParameters.address))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TimeseriesResponseOHLCVResponseFromJSON(jsonValue));\n }\n\n /**\n * Returns OHLCV candles for a single pool over a time range **Notes** - If both `start_time` and `end_time` are provided, candles are returned in the range `[start_time, end_time]` - If only one of `start_time` or `end_time` is provided, the missing bound is inferred using the selected `timeframe` - If neither is provided, a default range is used based on `timeframe`\n * OHLCV\n */\n async getOHLCV(requestParameters: GetOHLCVRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TimeseriesResponseOHLCVResponse> {\n const response = await this.getOHLCVRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Returns metadata and current state for a single pool\n * Pool\n */\n async getPoolRaw(requestParameters: GetPoolRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PoolResponse>> {\n if (requestParameters.address === null || requestParameters.address === undefined) {\n throw new runtime.RequiredError('address','Required parameter requestParameters.address was null or undefined when calling getPool.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/pools/{address}`.replace(`{${\"address\"}}`, encodeURIComponent(String(requestParameters.address))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PoolResponseFromJSON(jsonValue));\n }\n\n /**\n * Returns metadata and current state for a single pool\n * Pool\n */\n async getPool(requestParameters: GetPoolRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PoolResponse> {\n const response = await this.getPoolRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Returns a paginated list of pools\n * Pools\n */\n async getPoolsRaw(requestParameters: GetPoolsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GetPools200Response>> {\n const queryParameters: any = {};\n\n if (requestParameters.page !== undefined) {\n queryParameters['page'] = requestParameters.page;\n }\n\n if (requestParameters.pageSize !== undefined) {\n queryParameters['page_size'] = requestParameters.pageSize;\n }\n\n if (requestParameters.query !== undefined) {\n queryParameters['query'] = requestParameters.query;\n }\n\n if (requestParameters.sortBy !== undefined) {\n queryParameters['sort_by'] = requestParameters.sortBy;\n }\n\n if (requestParameters.filterBy !== undefined) {\n queryParameters['filter_by'] = requestParameters.filterBy;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/pools`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => GetPools200ResponseFromJSON(jsonValue));\n }\n\n /**\n * Returns a paginated list of pools\n * Pools\n */\n async getPools(requestParameters: GetPoolsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GetPools200Response> {\n const response = await this.getPoolsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DAMM V2 API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ErrorResponse,\n ProtocolMetricsResponse,\n} from '../models/index';\nimport {\n ErrorResponseFromJSON,\n ErrorResponseToJSON,\n ProtocolMetricsResponseFromJSON,\n ProtocolMetricsResponseToJSON,\n} from '../models/index';\n\n/**\n * \n */\nexport class StatsApi extends runtime.BaseAPI {\n\n /**\n * Returns aggregated protocol-level metrics across all pools\n * Protocol Overview\n */\n async getProtocolOverviewRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ProtocolMetricsResponse>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/stats/protocol_metrics`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ProtocolMetricsResponseFromJSON(jsonValue));\n }\n\n /**\n * Returns aggregated protocol-level metrics across all pools\n * Protocol Overview\n */\n async getProtocolOverview(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ProtocolMetricsResponse> {\n const response = await this.getProtocolOverviewRaw(initOverrides);\n return await response.value();\n }\n\n}\n","import { PoolsApi, StatsApi } from \"../../generated/ts/damm-v2/apis\";\nimport { Configuration } from \"../../generated/ts/damm-v2/runtime\";\nimport { type ApiClientOptions, resolveBaseUrl } from \"./config\";\n\nexport type DammV2ApiOptions = ApiClientOptions;\n\nexport class DammV2Api {\n public readonly pools: PoolsApi;\n public readonly stats: StatsApi;\n\n public constructor(options: DammV2ApiOptions = {}) {\n const configuration = new Configuration({\n basePath: resolveBaseUrl(options, \"https://damm-v2.datapi.meteora.ag\"),\n fetchApi: options.fetch,\n headers: options.headers,\n });\n\n this.pools = new PoolsApi(configuration);\n this.stats = new StatsApi(configuration);\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport const BASE_PATH = \"https://dlmm.datapi.meteora.ag\".replace(/\\/+$/, \"\");\n\nexport interface ConfigurationParameters {\n basePath?: string; // override base path\n fetchApi?: FetchAPI; // override for fetch implementation\n middleware?: Middleware[]; // middleware to apply before/after fetch requests\n queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings\n username?: string; // parameter for basic security\n password?: string; // parameter for basic security\n apiKey?: string | Promise<string> | ((name: string) => string | Promise<string>); // parameter for apiKey security\n accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string | Promise<string>); // parameter for oauth2 security\n headers?: HTTPHeaders; //header params we want to use on every request\n credentials?: RequestCredentials; //value for the credentials param we want to use on each request\n}\n\nexport class Configuration {\n constructor(private configuration: ConfigurationParameters = {}) {}\n\n set config(configuration: Configuration) {\n this.configuration = configuration;\n }\n\n get basePath(): string {\n return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH;\n }\n\n get fetchApi(): FetchAPI | undefined {\n return this.configuration.fetchApi;\n }\n\n get middleware(): Middleware[] {\n return this.configuration.middleware || [];\n }\n\n get queryParamsStringify(): (params: HTTPQuery) => string {\n return this.configuration.queryParamsStringify || querystring;\n }\n\n get username(): string | undefined {\n return this.configuration.username;\n }\n\n get password(): string | undefined {\n return this.configuration.password;\n }\n\n get apiKey(): ((name: string) => string | Promise<string>) | undefined {\n const apiKey = this.configuration.apiKey;\n if (apiKey) {\n return typeof apiKey === 'function' ? apiKey : () => apiKey;\n }\n return undefined;\n }\n\n get accessToken(): ((name?: string, scopes?: string[]) => string | Promise<string>) | undefined {\n const accessToken = this.configuration.accessToken;\n if (accessToken) {\n return typeof accessToken === 'function' ? accessToken : async () => accessToken;\n }\n return undefined;\n }\n\n get headers(): HTTPHeaders | undefined {\n return this.configuration.headers;\n }\n\n get credentials(): RequestCredentials | undefined {\n return this.configuration.credentials;\n }\n}\n\nexport const DefaultConfig = new Configuration();\n\n/**\n * This is the base class for all generated API classes.\n */\nexport class BaseAPI {\n\n private static readonly jsonRegex = new RegExp('^(:?application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(:?;.*)?$', 'i');\n private middleware: Middleware[];\n\n constructor(protected configuration = DefaultConfig) {\n this.middleware = configuration.middleware;\n }\n\n withMiddleware<T extends BaseAPI>(this: T, ...middlewares: Middleware[]) {\n const next = this.clone<T>();\n next.middleware = next.middleware.concat(...middlewares);\n return next;\n }\n\n withPreMiddleware<T extends BaseAPI>(this: T, ...preMiddlewares: Array<Middleware['pre']>) {\n const middlewares = preMiddlewares.map((pre) => ({ pre }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n withPostMiddleware<T extends BaseAPI>(this: T, ...postMiddlewares: Array<Middleware['post']>) {\n const middlewares = postMiddlewares.map((post) => ({ post }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n /**\n * Check if the given MIME is a JSON MIME.\n * JSON MIME examples:\n * application/json\n * application/json; charset=UTF8\n * APPLICATION/JSON\n * application/vnd.company+json\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\n * @return True if the given MIME is JSON, false otherwise.\n */\n protected isJsonMime(mime: string | null | undefined): boolean {\n if (!mime) {\n return false;\n }\n return BaseAPI.jsonRegex.test(mime);\n }\n\n protected async request(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction): Promise<Response> {\n const { url, init } = await this.createFetchParams(context, initOverrides);\n const response = await this.fetchApi(url, init);\n if (response && (response.status >= 200 && response.status < 300)) {\n return response;\n }\n throw new ResponseError(response, 'Response returned an error code');\n }\n\n private async createFetchParams(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction) {\n let url = this.configuration.basePath + context.path;\n if (context.query !== undefined && Object.keys(context.query).length !== 0) {\n // only add the querystring to the URL if there are query parameters.\n // this is done to avoid urls ending with a \"?\" character which buggy webservers\n // do not handle correctly sometimes.\n url += '?' + this.configuration.queryParamsStringify(context.query);\n }\n\n const headers = Object.assign({}, this.configuration.headers, context.headers);\n Object.keys(headers).forEach(key => headers[key] === undefined ? delete headers[key] : {});\n\n const initOverrideFn =\n typeof initOverrides === \"function\"\n ? initOverrides\n : async () => initOverrides;\n\n const initParams = {\n method: context.method,\n headers,\n body: context.body,\n credentials: this.configuration.credentials,\n };\n\n const overriddenInit: RequestInit = {\n ...initParams,\n ...(await initOverrideFn({\n init: initParams,\n context,\n }))\n };\n\n let body: any;\n if (isFormData(overriddenInit.body)\n || (overriddenInit.body instanceof URLSearchParams)\n || isBlob(overriddenInit.body)) {\n body = overriddenInit.body;\n } else if (this.isJsonMime(headers['Content-Type'])) {\n body = JSON.stringify(overriddenInit.body);\n } else {\n body = overriddenInit.body;\n }\n\n const init: RequestInit = {\n ...overriddenInit,\n body\n };\n\n return { url, init };\n }\n\n private fetchApi = async (url: string, init: RequestInit) => {\n let fetchParams = { url, init };\n for (const middleware of this.middleware) {\n if (middleware.pre) {\n fetchParams = await middleware.pre({\n fetch: this.fetchApi,\n ...fetchParams,\n }) || fetchParams;\n }\n }\n let response: Response | undefined = undefined;\n try {\n response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init);\n } catch (e) {\n for (const middleware of this.middleware) {\n if (middleware.onError) {\n response = await middleware.onError({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n error: e,\n response: response ? response.clone() : undefined,\n }) || response;\n }\n }\n if (response === undefined) {\n if (e instanceof Error) {\n throw new FetchError(e, 'The request failed and the interceptors did not return an alternative response');\n } else {\n throw e;\n }\n }\n }\n for (const middleware of this.middleware) {\n if (middleware.post) {\n response = await middleware.post({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n response: response.clone(),\n }) || response;\n }\n }\n return response;\n }\n\n /**\n * Create a shallow clone of `this` by constructing a new instance\n * and then shallow cloning data members.\n */\n private clone<T extends BaseAPI>(this: T): T {\n const constructor = this.constructor as any;\n const next = new constructor(this.configuration);\n next.middleware = this.middleware.slice();\n return next;\n }\n};\n\nfunction isBlob(value: any): value is Blob {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n\nfunction isFormData(value: any): value is FormData {\n return typeof FormData !== \"undefined\" && value instanceof FormData;\n}\n\nexport class ResponseError extends Error {\n override name: \"ResponseError\" = \"ResponseError\";\n constructor(public response: Response, msg?: string) {\n super(msg);\n }\n}\n\nexport class FetchError extends Error {\n override name: \"FetchError\" = \"FetchError\";\n constructor(public cause: Error, msg?: string) {\n super(msg);\n }\n}\n\nexport class RequiredError extends Error {\n override name: \"RequiredError\" = \"RequiredError\";\n constructor(public field: string, msg?: string) {\n super(msg);\n }\n}\n\nexport const COLLECTION_FORMATS = {\n csv: \",\",\n ssv: \" \",\n tsv: \"\\t\",\n pipes: \"|\",\n};\n\nexport type FetchAPI = WindowOrWorkerGlobalScope['fetch'];\n\nexport type Json = any;\nexport type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD';\nexport type HTTPHeaders = { [key: string]: string };\nexport type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery };\nexport type HTTPBody = Json | FormData | URLSearchParams;\nexport type HTTPRequestInit = { headers?: HTTPHeaders; method: HTTPMethod; credentials?: RequestCredentials; body?: HTTPBody };\nexport type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';\n\nexport type InitOverrideFunction = (requestContext: { init: HTTPRequestInit, context: RequestOpts }) => Promise<RequestInit>\n\nexport interface FetchParams {\n url: string;\n init: RequestInit;\n}\n\nexport interface RequestOpts {\n path: string;\n method: HTTPMethod;\n headers: HTTPHeaders;\n query?: HTTPQuery;\n body?: HTTPBody;\n}\n\nexport function exists(json: any, key: string) {\n const value = json[key];\n return value !== null && value !== undefined;\n}\n\nexport function querystring(params: HTTPQuery, prefix: string = ''): string {\n return Object.keys(params)\n .map(key => querystringSingleKey(key, params[key], prefix))\n .filter(part => part.length > 0)\n .join('&');\n}\n\nfunction querystringSingleKey(key: string, value: string | number | null | undefined | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery, keyPrefix: string = ''): string {\n const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key);\n if (value instanceof Array) {\n const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue)))\n .join(`&${encodeURIComponent(fullKey)}=`);\n return `${encodeURIComponent(fullKey)}=${multiValue}`;\n }\n if (value instanceof Set) {\n const valueAsArray = Array.from(value);\n return querystringSingleKey(key, valueAsArray, keyPrefix);\n }\n if (value instanceof Date) {\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`;\n }\n if (value instanceof Object) {\n return querystring(value as HTTPQuery, fullKey);\n }\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`;\n}\n\nexport function mapValues(data: any, fn: (item: any) => any) {\n return Object.keys(data).reduce(\n (acc, key) => ({ ...acc, [key]: fn(data[key]) }),\n {}\n );\n}\n\nexport function canConsumeForm(consumes: Consume[]): boolean {\n for (const consume of consumes) {\n if ('multipart/form-data' === consume.contentType) {\n return true;\n }\n }\n return false;\n}\n\nexport interface Consume {\n contentType: string;\n}\n\nexport interface RequestContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n}\n\nexport interface ResponseContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n response: Response;\n}\n\nexport interface ErrorContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n error: unknown;\n response?: Response;\n}\n\nexport interface Middleware {\n pre?(context: RequestContext): Promise<FetchParams | void>;\n post?(context: ResponseContext): Promise<Response | void>;\n onError?(context: ErrorContext): Promise<Response | void>;\n}\n\nexport interface ApiResponse<T> {\n raw: Response;\n value(): Promise<T>;\n}\n\nexport interface ResponseTransformer<T> {\n (json: any): T;\n}\n\nexport class JSONApiResponse<T> {\n constructor(public raw: Response, private transformer: ResponseTransformer<T> = (jsonValue: any) => jsonValue) {}\n\n async value(): Promise<T> {\n return this.transformer(await this.raw.json());\n }\n}\n\nexport class VoidApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<void> {\n return undefined;\n }\n}\n\nexport class BlobApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<Blob> {\n return await this.raw.blob();\n };\n}\n\nexport class TextApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<string> {\n return await this.raw.text();\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface AddressPath\n */\nexport interface AddressPath {\n /**\n * \n * @type {string}\n * @memberof AddressPath\n */\n address: string;\n}\n\n/**\n * Check if a given object implements the AddressPath interface.\n */\nexport function instanceOfAddressPath(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"address\" in value;\n\n return isInstance;\n}\n\nexport function AddressPathFromJSON(json: any): AddressPath {\n return AddressPathFromJSONTyped(json, false);\n}\n\nexport function AddressPathFromJSONTyped(json: any, ignoreDiscriminator: boolean): AddressPath {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'address': json['address'],\n };\n}\n\nexport function AddressPathToJSON(value?: AddressPath | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'address': value.address,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface AmountTotals\n */\nexport interface AmountTotals {\n /**\n * \n * @type {number}\n * @memberof AmountTotals\n */\n amountUsd: number;\n /**\n * \n * @type {number}\n * @memberof AmountTotals\n */\n amountX: number;\n /**\n * \n * @type {number}\n * @memberof AmountTotals\n */\n amountY: number;\n}\n\n/**\n * Check if a given object implements the AmountTotals interface.\n */\nexport function instanceOfAmountTotals(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"amountUsd\" in value;\n isInstance = isInstance && \"amountX\" in value;\n isInstance = isInstance && \"amountY\" in value;\n\n return isInstance;\n}\n\nexport function AmountTotalsFromJSON(json: any): AmountTotals {\n return AmountTotalsFromJSONTyped(json, false);\n}\n\nexport function AmountTotalsFromJSONTyped(json: any, ignoreDiscriminator: boolean): AmountTotals {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'amountUsd': json['amount_usd'],\n 'amountX': json['amount_x'],\n 'amountY': json['amount_y'],\n };\n}\n\nexport function AmountTotalsToJSON(value?: AmountTotals | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'amount_usd': value.amountUsd,\n 'amount_x': value.amountX,\n 'amount_y': value.amountY,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * Realized bonus a wallet has claimed on one pool. Aggregates every cancel\n * event the wallet has on the pool, including cancels on orders that have\n * not yet been closed. USD/SOL values are priced from each cancel row's own\n * `amount_*_usd` / `amount_*_sol` ratios (cancel-time prices), not current\n * spot.\n * @export\n * @interface BonusClaimedResponse\n */\nexport interface BonusClaimedResponse {\n /**\n * Number of distinct cancel events contributing to these totals.\n * @type {number}\n * @memberof BonusClaimedResponse\n */\n cancelEventCount: number;\n /**\n * `total_bonus_x_sol + total_bonus_y_sol`.\n * @type {string}\n * @memberof BonusClaimedResponse\n */\n totalBonusSol: string;\n /**\n * `total_bonus_x_usd + total_bonus_y_usd`.\n * @type {string}\n * @memberof BonusClaimedResponse\n */\n totalBonusUsd: string;\n /**\n * Bonus token X claimed, in token X display units (decimals applied).\n * @type {string}\n * @memberof BonusClaimedResponse\n */\n totalBonusX: string;\n /**\n * Bonus token X claimed, in SOL (cancel-time SOL price).\n * @type {string}\n * @memberof BonusClaimedResponse\n */\n totalBonusXSol: string;\n /**\n * Bonus token X claimed, in USD (cancel-time price).\n * @type {string}\n * @memberof BonusClaimedResponse\n */\n totalBonusXUsd: string;\n /**\n * Bonus token Y claimed, in token Y display units (decimals applied).\n * @type {string}\n * @memberof BonusClaimedResponse\n */\n totalBonusY: string;\n /**\n * Bonus token Y claimed, in SOL (cancel-time SOL price).\n * @type {string}\n * @memberof BonusClaimedResponse\n */\n totalBonusYSol: string;\n /**\n * Bonus token Y claimed, in USD (cancel-time price).\n * @type {string}\n * @memberof BonusClaimedResponse\n */\n totalBonusYUsd: string;\n}\n\n/**\n * Check if a given object implements the BonusClaimedResponse interface.\n */\nexport function instanceOfBonusClaimedResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"cancelEventCount\" in value;\n isInstance = isInstance && \"totalBonusSol\" in value;\n isInstance = isInstance && \"totalBonusUsd\" in value;\n isInstance = isInstance && \"totalBonusX\" in value;\n isInstance = isInstance && \"totalBonusXSol\" in value;\n isInstance = isInstance && \"totalBonusXUsd\" in value;\n isInstance = isInstance && \"totalBonusY\" in value;\n isInstance = isInstance && \"totalBonusYSol\" in value;\n isInstance = isInstance && \"totalBonusYUsd\" in value;\n\n return isInstance;\n}\n\nexport function BonusClaimedResponseFromJSON(json: any): BonusClaimedResponse {\n return BonusClaimedResponseFromJSONTyped(json, false);\n}\n\nexport function BonusClaimedResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): BonusClaimedResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'cancelEventCount': json['cancel_event_count'],\n 'totalBonusSol': json['total_bonus_sol'],\n 'totalBonusUsd': json['total_bonus_usd'],\n 'totalBonusX': json['total_bonus_x'],\n 'totalBonusXSol': json['total_bonus_x_sol'],\n 'totalBonusXUsd': json['total_bonus_x_usd'],\n 'totalBonusY': json['total_bonus_y'],\n 'totalBonusYSol': json['total_bonus_y_sol'],\n 'totalBonusYUsd': json['total_bonus_y_usd'],\n };\n}\n\nexport function BonusClaimedResponseToJSON(value?: BonusClaimedResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'cancel_event_count': value.cancelEventCount,\n 'total_bonus_sol': value.totalBonusSol,\n 'total_bonus_usd': value.totalBonusUsd,\n 'total_bonus_x': value.totalBonusX,\n 'total_bonus_x_sol': value.totalBonusXSol,\n 'total_bonus_x_usd': value.totalBonusXUsd,\n 'total_bonus_y': value.totalBonusY,\n 'total_bonus_y_sol': value.totalBonusYSol,\n 'total_bonus_y_usd': value.totalBonusYUsd,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * Per-order lifecycle row for a closed limit order in a specific pool.\n * Pool-level metadata (pair, bin step, fees, tokens) lives once at the top of\n * the response — see `ClosedLimitOrdersForPoolResponse`.\n * @export\n * @interface ClosedLimitOrderDetail\n */\nexport interface ClosedLimitOrderDetail {\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n filledInputAmount: string;\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n filledPct: string;\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n inputToken: string;\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n inputTokenMint: string;\n /**\n * \n * @type {boolean}\n * @memberof ClosedLimitOrderDetail\n */\n isAskSide: boolean;\n /**\n * Unix seconds. Block time of the close event.\n * @type {number}\n * @memberof ClosedLimitOrderDetail\n */\n lastClosedAt: number;\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n limitOrderAddress: string;\n /**\n * \n * @type {number}\n * @memberof ClosedLimitOrderDetail\n */\n lowerPoolPrice: number;\n /**\n * Unix seconds.\n * @type {number}\n * @memberof ClosedLimitOrderDetail\n */\n openedAt: number;\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n openedAtSignature: string;\n /**\n * \n * @type {number}\n * @memberof ClosedLimitOrderDetail\n */\n openedAtSlot: number;\n /**\n * Expected output at placement bin prices — `amount_y` for asks,\n * `amount_x` for bids. Pre-computed on the\n * `limit_orders_aggregate.output_amount_expected` column by the open\n * MV via `if(is_ask_side, amount_y, amount_x)`; the closed-detail SQL\n * reads the stored value directly. Mirrors\n * `OpenLimitOrderDetail::output_amount_expected`.\n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n outputAmountExpected: string;\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n outputToken: string;\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n outputTokenMint: string;\n /**\n * Output token amount received for the filled portion of this order, in\n * output-token display units. Sourced from cancel events: the cancel\n * instruction emits the output-side token alongside any unfilled deposit\n * remainder. For an ask order this is `total_withdrawal_y`; for a bid\n * order it is `total_withdrawal_x`.\n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n receivedOutputAmount: string;\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n terminalSignature: string;\n /**\n * \n * @type {number}\n * @memberof ClosedLimitOrderDetail\n */\n terminalSlot: number;\n /**\n * SOL value of bonus (cancel-event-time SOL price).\n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n totalBonusSol: string;\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n totalBonusUsd: string;\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n totalBonusX: string;\n /**\n * SOL value of token X bonus (cancel-event-time SOL price).\n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n totalBonusXSol: string;\n /**\n * USD value of token X bonus (cancel-event-time USD price).\n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n totalBonusXUsd: string;\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n totalBonusY: string;\n /**\n * SOL value of token Y bonus (cancel-event-time SOL price).\n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n totalBonusYSol: string;\n /**\n * USD value of token Y bonus (cancel-event-time USD price).\n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n totalBonusYUsd: string;\n /**\n * SOL value of deposits, deposit-side only (placement-time SOL price).\n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n totalDepositSol: string;\n /**\n * USD value of deposits, deposit-side only (an ask deposits X, a bid deposits Y).\n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n totalDepositUsd: string;\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n totalDepositX: string;\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n totalDepositY: string;\n /**\n * SOL value of withdrawals (cancel-event-time SOL price).\n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n totalWithdrawalSol: string;\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n totalWithdrawalUsd: string;\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n totalWithdrawalX: string;\n /**\n * SOL value of token X withdrawn (cancel-event-time SOL price).\n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n totalWithdrawalXSol: string;\n /**\n * USD value of token X withdrawn (cancel-event-time USD price).\n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n totalWithdrawalXUsd: string;\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n totalWithdrawalY: string;\n /**\n * SOL value of token Y withdrawn (cancel-event-time SOL price).\n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n totalWithdrawalYSol: string;\n /**\n * USD value of token Y withdrawn (cancel-event-time USD price).\n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n totalWithdrawalYUsd: string;\n /**\n * \n * @type {number}\n * @memberof ClosedLimitOrderDetail\n */\n upperPoolPrice: number;\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderDetail\n */\n userAddress: string;\n}\n\n/**\n * Check if a given object implements the ClosedLimitOrderDetail interface.\n */\nexport function instanceOfClosedLimitOrderDetail(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"filledInputAmount\" in value;\n isInstance = isInstance && \"filledPct\" in value;\n isInstance = isInstance && \"inputToken\" in value;\n isInstance = isInstance && \"inputTokenMint\" in value;\n isInstance = isInstance && \"isAskSide\" in value;\n isInstance = isInstance && \"lastClosedAt\" in value;\n isInstance = isInstance && \"limitOrderAddress\" in value;\n isInstance = isInstance && \"lowerPoolPrice\" in value;\n isInstance = isInstance && \"openedAt\" in value;\n isInstance = isInstance && \"openedAtSignature\" in value;\n isInstance = isInstance && \"openedAtSlot\" in value;\n isInstance = isInstance && \"outputAmountExpected\" in value;\n isInstance = isInstance && \"outputToken\" in value;\n isInstance = isInstance && \"outputTokenMint\" in value;\n isInstance = isInstance && \"receivedOutputAmount\" in value;\n isInstance = isInstance && \"terminalSignature\" in value;\n isInstance = isInstance && \"terminalSlot\" in value;\n isInstance = isInstance && \"totalBonusSol\" in value;\n isInstance = isInstance && \"totalBonusUsd\" in value;\n isInstance = isInstance && \"totalBonusX\" in value;\n isInstance = isInstance && \"totalBonusXSol\" in value;\n isInstance = isInstance && \"totalBonusXUsd\" in value;\n isInstance = isInstance && \"totalBonusY\" in value;\n isInstance = isInstance && \"totalBonusYSol\" in value;\n isInstance = isInstance && \"totalBonusYUsd\" in value;\n isInstance = isInstance && \"totalDepositSol\" in value;\n isInstance = isInstance && \"totalDepositUsd\" in value;\n isInstance = isInstance && \"totalDepositX\" in value;\n isInstance = isInstance && \"totalDepositY\" in value;\n isInstance = isInstance && \"totalWithdrawalSol\" in value;\n isInstance = isInstance && \"totalWithdrawalUsd\" in value;\n isInstance = isInstance && \"totalWithdrawalX\" in value;\n isInstance = isInstance && \"totalWithdrawalXSol\" in value;\n isInstance = isInstance && \"totalWithdrawalXUsd\" in value;\n isInstance = isInstance && \"totalWithdrawalY\" in value;\n isInstance = isInstance && \"totalWithdrawalYSol\" in value;\n isInstance = isInstance && \"totalWithdrawalYUsd\" in value;\n isInstance = isInstance && \"upperPoolPrice\" in value;\n isInstance = isInstance && \"userAddress\" in value;\n\n return isInstance;\n}\n\nexport function ClosedLimitOrderDetailFromJSON(json: any): ClosedLimitOrderDetail {\n return ClosedLimitOrderDetailFromJSONTyped(json, false);\n}\n\nexport function ClosedLimitOrderDetailFromJSONTyped(json: any, ignoreDiscriminator: boolean): ClosedLimitOrderDetail {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'filledInputAmount': json['filled_input_amount'],\n 'filledPct': json['filled_pct'],\n 'inputToken': json['input_token'],\n 'inputTokenMint': json['input_token_mint'],\n 'isAskSide': json['is_ask_side'],\n 'lastClosedAt': json['last_closed_at'],\n 'limitOrderAddress': json['limit_order_address'],\n 'lowerPoolPrice': json['lower_pool_price'],\n 'openedAt': json['opened_at'],\n 'openedAtSignature': json['opened_at_signature'],\n 'openedAtSlot': json['opened_at_slot'],\n 'outputAmountExpected': json['output_amount_expected'],\n 'outputToken': json['output_token'],\n 'outputTokenMint': json['output_token_mint'],\n 'receivedOutputAmount': json['received_output_amount'],\n 'terminalSignature': json['terminal_signature'],\n 'terminalSlot': json['terminal_slot'],\n 'totalBonusSol': json['total_bonus_sol'],\n 'totalBonusUsd': json['total_bonus_usd'],\n 'totalBonusX': json['total_bonus_x'],\n 'totalBonusXSol': json['total_bonus_x_sol'],\n 'totalBonusXUsd': json['total_bonus_x_usd'],\n 'totalBonusY': json['total_bonus_y'],\n 'totalBonusYSol': json['total_bonus_y_sol'],\n 'totalBonusYUsd': json['total_bonus_y_usd'],\n 'totalDepositSol': json['total_deposit_sol'],\n 'totalDepositUsd': json['total_deposit_usd'],\n 'totalDepositX': json['total_deposit_x'],\n 'totalDepositY': json['total_deposit_y'],\n 'totalWithdrawalSol': json['total_withdrawal_sol'],\n 'totalWithdrawalUsd': json['total_withdrawal_usd'],\n 'totalWithdrawalX': json['total_withdrawal_x'],\n 'totalWithdrawalXSol': json['total_withdrawal_x_sol'],\n 'totalWithdrawalXUsd': json['total_withdrawal_x_usd'],\n 'totalWithdrawalY': json['total_withdrawal_y'],\n 'totalWithdrawalYSol': json['total_withdrawal_y_sol'],\n 'totalWithdrawalYUsd': json['total_withdrawal_y_usd'],\n 'upperPoolPrice': json['upper_pool_price'],\n 'userAddress': json['user_address'],\n };\n}\n\nexport function ClosedLimitOrderDetailToJSON(value?: ClosedLimitOrderDetail | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'filled_input_amount': value.filledInputAmount,\n 'filled_pct': value.filledPct,\n 'input_token': value.inputToken,\n 'input_token_mint': value.inputTokenMint,\n 'is_ask_side': value.isAskSide,\n 'last_closed_at': value.lastClosedAt,\n 'limit_order_address': value.limitOrderAddress,\n 'lower_pool_price': value.lowerPoolPrice,\n 'opened_at': value.openedAt,\n 'opened_at_signature': value.openedAtSignature,\n 'opened_at_slot': value.openedAtSlot,\n 'output_amount_expected': value.outputAmountExpected,\n 'output_token': value.outputToken,\n 'output_token_mint': value.outputTokenMint,\n 'received_output_amount': value.receivedOutputAmount,\n 'terminal_signature': value.terminalSignature,\n 'terminal_slot': value.terminalSlot,\n 'total_bonus_sol': value.totalBonusSol,\n 'total_bonus_usd': value.totalBonusUsd,\n 'total_bonus_x': value.totalBonusX,\n 'total_bonus_x_sol': value.totalBonusXSol,\n 'total_bonus_x_usd': value.totalBonusXUsd,\n 'total_bonus_y': value.totalBonusY,\n 'total_bonus_y_sol': value.totalBonusYSol,\n 'total_bonus_y_usd': value.totalBonusYUsd,\n 'total_deposit_sol': value.totalDepositSol,\n 'total_deposit_usd': value.totalDepositUsd,\n 'total_deposit_x': value.totalDepositX,\n 'total_deposit_y': value.totalDepositY,\n 'total_withdrawal_sol': value.totalWithdrawalSol,\n 'total_withdrawal_usd': value.totalWithdrawalUsd,\n 'total_withdrawal_x': value.totalWithdrawalX,\n 'total_withdrawal_x_sol': value.totalWithdrawalXSol,\n 'total_withdrawal_x_usd': value.totalWithdrawalXUsd,\n 'total_withdrawal_y': value.totalWithdrawalY,\n 'total_withdrawal_y_sol': value.totalWithdrawalYSol,\n 'total_withdrawal_y_usd': value.totalWithdrawalYUsd,\n 'upper_pool_price': value.upperPoolPrice,\n 'user_address': value.userAddress,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * Pool-level metadata shared across all limit-order responses for a given\n * pool. Same shape on both the open- and closed-order endpoints so clients\n * can render the pool header from a single struct.\n * @export\n * @interface LimitOrderPoolDetails\n */\nexport interface LimitOrderPoolDetails {\n /**\n * Pool base fee as a percentage (f64 serialized as string to preserve precision).\n * @type {string}\n * @memberof LimitOrderPoolDetails\n */\n baseFee: string;\n /**\n * Pool bin step in basis points (on-chain u16).\n * @type {number}\n * @memberof LimitOrderPoolDetails\n */\n binStep: number;\n /**\n * 0 = `InputOnly` (bonus flows to the deposit/input token),\n * 1 = `OnlyY` (bonus always in token Y regardless of side).\n * @type {number}\n * @memberof LimitOrderPoolDetails\n */\n collectFeeMode: number;\n /**\n * `\"{X}-{Y}\"` computed from token symbols.\n * @type {string}\n * @memberof LimitOrderPoolDetails\n */\n pairName: string;\n /**\n * \n * @type {string}\n * @memberof LimitOrderPoolDetails\n */\n poolAddress: string;\n /**\n * \n * @type {string}\n * @memberof LimitOrderPoolDetails\n */\n tokenX: string;\n /**\n * \n * @type {string}\n * @memberof LimitOrderPoolDetails\n */\n tokenXIcon: string;\n /**\n * \n * @type {string}\n * @memberof LimitOrderPoolDetails\n */\n tokenXMint: string;\n /**\n * \n * @type {string}\n * @memberof LimitOrderPoolDetails\n */\n tokenY: string;\n /**\n * \n * @type {string}\n * @memberof LimitOrderPoolDetails\n */\n tokenYIcon: string;\n /**\n * \n * @type {string}\n * @memberof LimitOrderPoolDetails\n */\n tokenYMint: string;\n}\n\n/**\n * Check if a given object implements the LimitOrderPoolDetails interface.\n */\nexport function instanceOfLimitOrderPoolDetails(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"baseFee\" in value;\n isInstance = isInstance && \"binStep\" in value;\n isInstance = isInstance && \"collectFeeMode\" in value;\n isInstance = isInstance && \"pairName\" in value;\n isInstance = isInstance && \"poolAddress\" in value;\n isInstance = isInstance && \"tokenX\" in value;\n isInstance = isInstance && \"tokenXIcon\" in value;\n isInstance = isInstance && \"tokenXMint\" in value;\n isInstance = isInstance && \"tokenY\" in value;\n isInstance = isInstance && \"tokenYIcon\" in value;\n isInstance = isInstance && \"tokenYMint\" in value;\n\n return isInstance;\n}\n\nexport function LimitOrderPoolDetailsFromJSON(json: any): LimitOrderPoolDetails {\n return LimitOrderPoolDetailsFromJSONTyped(json, false);\n}\n\nexport function LimitOrderPoolDetailsFromJSONTyped(json: any, ignoreDiscriminator: boolean): LimitOrderPoolDetails {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'baseFee': json['base_fee'],\n 'binStep': json['bin_step'],\n 'collectFeeMode': json['collect_fee_mode'],\n 'pairName': json['pair_name'],\n 'poolAddress': json['pool_address'],\n 'tokenX': json['token_x'],\n 'tokenXIcon': json['token_x_icon'],\n 'tokenXMint': json['token_x_mint'],\n 'tokenY': json['token_y'],\n 'tokenYIcon': json['token_y_icon'],\n 'tokenYMint': json['token_y_mint'],\n };\n}\n\nexport function LimitOrderPoolDetailsToJSON(value?: LimitOrderPoolDetails | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'base_fee': value.baseFee,\n 'bin_step': value.binStep,\n 'collect_fee_mode': value.collectFeeMode,\n 'pair_name': value.pairName,\n 'pool_address': value.poolAddress,\n 'token_x': value.tokenX,\n 'token_x_icon': value.tokenXIcon,\n 'token_x_mint': value.tokenXMint,\n 'token_y': value.tokenY,\n 'token_y_icon': value.tokenYIcon,\n 'token_y_mint': value.tokenYMint,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { LimitOrderPoolDetails } from './LimitOrderPoolDetails';\nimport {\n LimitOrderPoolDetailsFromJSON,\n LimitOrderPoolDetailsFromJSONTyped,\n LimitOrderPoolDetailsToJSON,\n} from './LimitOrderPoolDetails';\n\n/**\n * \n * @export\n * @interface ClosedLimitOrderPoolSummary\n */\nexport interface ClosedLimitOrderPoolSummary {\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderPoolSummary\n */\n filledPct: string;\n /**\n * \n * @type {number}\n * @memberof ClosedLimitOrderPoolSummary\n */\n fullyFilledOrders: number;\n /**\n * Unix seconds. Latest close-event block time for this pool.\n * @type {number}\n * @memberof ClosedLimitOrderPoolSummary\n */\n lastClosedAt: number;\n /**\n * \n * @type {LimitOrderPoolDetails}\n * @memberof ClosedLimitOrderPoolSummary\n */\n pool: LimitOrderPoolDetails;\n /**\n * SOL value of bonus (cancel-event-time SOL price).\n * @type {string}\n * @memberof ClosedLimitOrderPoolSummary\n */\n totalBonusSol: string;\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderPoolSummary\n */\n totalBonusUsd: string;\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderPoolSummary\n */\n totalBonusX: string;\n /**\n * SOL value of token X bonus (cancel-event-time SOL price).\n * @type {string}\n * @memberof ClosedLimitOrderPoolSummary\n */\n totalBonusXSol: string;\n /**\n * USD value of token X bonus (cancel-event-time USD price).\n * @type {string}\n * @memberof ClosedLimitOrderPoolSummary\n */\n totalBonusXUsd: string;\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderPoolSummary\n */\n totalBonusY: string;\n /**\n * SOL value of token Y bonus (cancel-event-time SOL price).\n * @type {string}\n * @memberof ClosedLimitOrderPoolSummary\n */\n totalBonusYSol: string;\n /**\n * USD value of token Y bonus (cancel-event-time USD price).\n * @type {string}\n * @memberof ClosedLimitOrderPoolSummary\n */\n totalBonusYUsd: string;\n /**\n * SOL value of deposits, deposit-side only (placement-time SOL price).\n * @type {string}\n * @memberof ClosedLimitOrderPoolSummary\n */\n totalDepositSol: string;\n /**\n * USD value of deposits, deposit-side only (an ask deposits X, a bid deposits Y).\n * @type {string}\n * @memberof ClosedLimitOrderPoolSummary\n */\n totalDepositUsd: string;\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderPoolSummary\n */\n totalDepositX: string;\n /**\n * SOL value of token X deposits (placement-time SOL price).\n * @type {string}\n * @memberof ClosedLimitOrderPoolSummary\n */\n totalDepositXSol: string;\n /**\n * USD value of token X deposits (placement-time price; only ask orders deposit X).\n * @type {string}\n * @memberof ClosedLimitOrderPoolSummary\n */\n totalDepositXUsd: string;\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderPoolSummary\n */\n totalDepositY: string;\n /**\n * SOL value of token Y deposits (placement-time SOL price).\n * @type {string}\n * @memberof ClosedLimitOrderPoolSummary\n */\n totalDepositYSol: string;\n /**\n * USD value of token Y deposits (placement-time price; only bid orders deposit Y).\n * @type {string}\n * @memberof ClosedLimitOrderPoolSummary\n */\n totalDepositYUsd: string;\n /**\n * \n * @type {number}\n * @memberof ClosedLimitOrderPoolSummary\n */\n totalOrders: number;\n /**\n * SOL value of withdrawals (cancel-event-time SOL price).\n * @type {string}\n * @memberof ClosedLimitOrderPoolSummary\n */\n totalWithdrawalSol: string;\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderPoolSummary\n */\n totalWithdrawalUsd: string;\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderPoolSummary\n */\n totalWithdrawalX: string;\n /**\n * SOL value of token X withdrawn (cancel-event-time SOL price).\n * @type {string}\n * @memberof ClosedLimitOrderPoolSummary\n */\n totalWithdrawalXSol: string;\n /**\n * USD value of token X withdrawn (cancel-event-time USD price).\n * @type {string}\n * @memberof ClosedLimitOrderPoolSummary\n */\n totalWithdrawalXUsd: string;\n /**\n * \n * @type {string}\n * @memberof ClosedLimitOrderPoolSummary\n */\n totalWithdrawalY: string;\n /**\n * SOL value of token Y withdrawn (cancel-event-time SOL price).\n * @type {string}\n * @memberof ClosedLimitOrderPoolSummary\n */\n totalWithdrawalYSol: string;\n /**\n * USD value of token Y withdrawn (cancel-event-time USD price).\n * @type {string}\n * @memberof ClosedLimitOrderPoolSummary\n */\n totalWithdrawalYUsd: string;\n}\n\n/**\n * Check if a given object implements the ClosedLimitOrderPoolSummary interface.\n */\nexport function instanceOfClosedLimitOrderPoolSummary(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"filledPct\" in value;\n isInstance = isInstance && \"fullyFilledOrders\" in value;\n isInstance = isInstance && \"lastClosedAt\" in value;\n isInstance = isInstance && \"pool\" in value;\n isInstance = isInstance && \"totalBonusSol\" in value;\n isInstance = isInstance && \"totalBonusUsd\" in value;\n isInstance = isInstance && \"totalBonusX\" in value;\n isInstance = isInstance && \"totalBonusXSol\" in value;\n isInstance = isInstance && \"totalBonusXUsd\" in value;\n isInstance = isInstance && \"totalBonusY\" in value;\n isInstance = isInstance && \"totalBonusYSol\" in value;\n isInstance = isInstance && \"totalBonusYUsd\" in value;\n isInstance = isInstance && \"totalDepositSol\" in value;\n isInstance = isInstance && \"totalDepositUsd\" in value;\n isInstance = isInstance && \"totalDepositX\" in value;\n isInstance = isInstance && \"totalDepositXSol\" in value;\n isInstance = isInstance && \"totalDepositXUsd\" in value;\n isInstance = isInstance && \"totalDepositY\" in value;\n isInstance = isInstance && \"totalDepositYSol\" in value;\n isInstance = isInstance && \"totalDepositYUsd\" in value;\n isInstance = isInstance && \"totalOrders\" in value;\n isInstance = isInstance && \"totalWithdrawalSol\" in value;\n isInstance = isInstance && \"totalWithdrawalUsd\" in value;\n isInstance = isInstance && \"totalWithdrawalX\" in value;\n isInstance = isInstance && \"totalWithdrawalXSol\" in value;\n isInstance = isInstance && \"totalWithdrawalXUsd\" in value;\n isInstance = isInstance && \"totalWithdrawalY\" in value;\n isInstance = isInstance && \"totalWithdrawalYSol\" in value;\n isInstance = isInstance && \"totalWithdrawalYUsd\" in value;\n\n return isInstance;\n}\n\nexport function ClosedLimitOrderPoolSummaryFromJSON(json: any): ClosedLimitOrderPoolSummary {\n return ClosedLimitOrderPoolSummaryFromJSONTyped(json, false);\n}\n\nexport function ClosedLimitOrderPoolSummaryFromJSONTyped(json: any, ignoreDiscriminator: boolean): ClosedLimitOrderPoolSummary {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'filledPct': json['filled_pct'],\n 'fullyFilledOrders': json['fully_filled_orders'],\n 'lastClosedAt': json['last_closed_at'],\n 'pool': LimitOrderPoolDetailsFromJSON(json['pool']),\n 'totalBonusSol': json['total_bonus_sol'],\n 'totalBonusUsd': json['total_bonus_usd'],\n 'totalBonusX': json['total_bonus_x'],\n 'totalBonusXSol': json['total_bonus_x_sol'],\n 'totalBonusXUsd': json['total_bonus_x_usd'],\n 'totalBonusY': json['total_bonus_y'],\n 'totalBonusYSol': json['total_bonus_y_sol'],\n 'totalBonusYUsd': json['total_bonus_y_usd'],\n 'totalDepositSol': json['total_deposit_sol'],\n 'totalDepositUsd': json['total_deposit_usd'],\n 'totalDepositX': json['total_deposit_x'],\n 'totalDepositXSol': json['total_deposit_x_sol'],\n 'totalDepositXUsd': json['total_deposit_x_usd'],\n 'totalDepositY': json['total_deposit_y'],\n 'totalDepositYSol': json['total_deposit_y_sol'],\n 'totalDepositYUsd': json['total_deposit_y_usd'],\n 'totalOrders': json['total_orders'],\n 'totalWithdrawalSol': json['total_withdrawal_sol'],\n 'totalWithdrawalUsd': json['total_withdrawal_usd'],\n 'totalWithdrawalX': json['total_withdrawal_x'],\n 'totalWithdrawalXSol': json['total_withdrawal_x_sol'],\n 'totalWithdrawalXUsd': json['total_withdrawal_x_usd'],\n 'totalWithdrawalY': json['total_withdrawal_y'],\n 'totalWithdrawalYSol': json['total_withdrawal_y_sol'],\n 'totalWithdrawalYUsd': json['total_withdrawal_y_usd'],\n };\n}\n\nexport function ClosedLimitOrderPoolSummaryToJSON(value?: ClosedLimitOrderPoolSummary | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'filled_pct': value.filledPct,\n 'fully_filled_orders': value.fullyFilledOrders,\n 'last_closed_at': value.lastClosedAt,\n 'pool': LimitOrderPoolDetailsToJSON(value.pool),\n 'total_bonus_sol': value.totalBonusSol,\n 'total_bonus_usd': value.totalBonusUsd,\n 'total_bonus_x': value.totalBonusX,\n 'total_bonus_x_sol': value.totalBonusXSol,\n 'total_bonus_x_usd': value.totalBonusXUsd,\n 'total_bonus_y': value.totalBonusY,\n 'total_bonus_y_sol': value.totalBonusYSol,\n 'total_bonus_y_usd': value.totalBonusYUsd,\n 'total_deposit_sol': value.totalDepositSol,\n 'total_deposit_usd': value.totalDepositUsd,\n 'total_deposit_x': value.totalDepositX,\n 'total_deposit_x_sol': value.totalDepositXSol,\n 'total_deposit_x_usd': value.totalDepositXUsd,\n 'total_deposit_y': value.totalDepositY,\n 'total_deposit_y_sol': value.totalDepositYSol,\n 'total_deposit_y_usd': value.totalDepositYUsd,\n 'total_orders': value.totalOrders,\n 'total_withdrawal_sol': value.totalWithdrawalSol,\n 'total_withdrawal_usd': value.totalWithdrawalUsd,\n 'total_withdrawal_x': value.totalWithdrawalX,\n 'total_withdrawal_x_sol': value.totalWithdrawalXSol,\n 'total_withdrawal_x_usd': value.totalWithdrawalXUsd,\n 'total_withdrawal_y': value.totalWithdrawalY,\n 'total_withdrawal_y_sol': value.totalWithdrawalYSol,\n 'total_withdrawal_y_usd': value.totalWithdrawalYUsd,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ClosedLimitOrderDetail } from './ClosedLimitOrderDetail';\nimport {\n ClosedLimitOrderDetailFromJSON,\n ClosedLimitOrderDetailFromJSONTyped,\n ClosedLimitOrderDetailToJSON,\n} from './ClosedLimitOrderDetail';\nimport type { LimitOrderPoolDetails } from './LimitOrderPoolDetails';\nimport {\n LimitOrderPoolDetailsFromJSON,\n LimitOrderPoolDetailsFromJSONTyped,\n LimitOrderPoolDetailsToJSON,\n} from './LimitOrderPoolDetails';\n\n/**\n * Top-level response for `GET /wallets/{wallet}/limit_orders/closed/pools/{pool_address}`.\n * Pool metadata is emitted once at the top; per-order rows in `data` only\n * carry order-specific fields.\n * @export\n * @interface ClosedLimitOrdersForPoolResponse\n */\nexport interface ClosedLimitOrdersForPoolResponse {\n /**\n * \n * @type {number}\n * @memberof ClosedLimitOrdersForPoolResponse\n */\n currentPage: number;\n /**\n * \n * @type {Array<ClosedLimitOrderDetail>}\n * @memberof ClosedLimitOrdersForPoolResponse\n */\n data: Array<ClosedLimitOrderDetail>;\n /**\n * \n * @type {number}\n * @memberof ClosedLimitOrdersForPoolResponse\n */\n pageSize: number;\n /**\n * \n * @type {number}\n * @memberof ClosedLimitOrdersForPoolResponse\n */\n pages: number;\n /**\n * \n * @type {LimitOrderPoolDetails}\n * @memberof ClosedLimitOrdersForPoolResponse\n */\n pool: LimitOrderPoolDetails;\n /**\n * \n * @type {number}\n * @memberof ClosedLimitOrdersForPoolResponse\n */\n total: number;\n}\n\n/**\n * Check if a given object implements the ClosedLimitOrdersForPoolResponse interface.\n */\nexport function instanceOfClosedLimitOrdersForPoolResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"currentPage\" in value;\n isInstance = isInstance && \"data\" in value;\n isInstance = isInstance && \"pageSize\" in value;\n isInstance = isInstance && \"pages\" in value;\n isInstance = isInstance && \"pool\" in value;\n isInstance = isInstance && \"total\" in value;\n\n return isInstance;\n}\n\nexport function ClosedLimitOrdersForPoolResponseFromJSON(json: any): ClosedLimitOrdersForPoolResponse {\n return ClosedLimitOrdersForPoolResponseFromJSONTyped(json, false);\n}\n\nexport function ClosedLimitOrdersForPoolResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ClosedLimitOrdersForPoolResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'currentPage': json['current_page'],\n 'data': ((json['data'] as Array<any>).map(ClosedLimitOrderDetailFromJSON)),\n 'pageSize': json['page_size'],\n 'pages': json['pages'],\n 'pool': LimitOrderPoolDetailsFromJSON(json['pool']),\n 'total': json['total'],\n };\n}\n\nexport function ClosedLimitOrdersForPoolResponseToJSON(value?: ClosedLimitOrdersForPoolResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'current_page': value.currentPage,\n 'data': ((value.data as Array<any>).map(ClosedLimitOrderDetailToJSON)),\n 'page_size': value.pageSize,\n 'pages': value.pages,\n 'pool': LimitOrderPoolDetailsToJSON(value.pool),\n 'total': value.total,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { AmountTotals } from './AmountTotals';\nimport {\n AmountTotalsFromJSON,\n AmountTotalsFromJSONTyped,\n AmountTotalsToJSON,\n} from './AmountTotals';\n\n/**\n * \n * @export\n * @interface ClosedPositionsResponse\n */\nexport interface ClosedPositionsResponse {\n /**\n * \n * @type {number}\n * @memberof ClosedPositionsResponse\n */\n closedAt: number;\n /**\n * \n * @type {number}\n * @memberof ClosedPositionsResponse\n */\n createdAt: number;\n /**\n * \n * @type {number}\n * @memberof ClosedPositionsResponse\n */\n lowerBinId: number;\n /**\n * \n * @type {number}\n * @memberof ClosedPositionsResponse\n */\n pnl: number;\n /**\n * \n * @type {number}\n * @memberof ClosedPositionsResponse\n */\n pnlChangePct: number;\n /**\n * \n * @type {string}\n * @memberof ClosedPositionsResponse\n */\n poolAddress: string;\n /**\n * \n * @type {string}\n * @memberof ClosedPositionsResponse\n */\n positionAddress: string;\n /**\n * \n * @type {AmountTotals}\n * @memberof ClosedPositionsResponse\n */\n totalClaimedFees: AmountTotals;\n /**\n * \n * @type {AmountTotals}\n * @memberof ClosedPositionsResponse\n */\n totalDeposits: AmountTotals;\n /**\n * \n * @type {AmountTotals}\n * @memberof ClosedPositionsResponse\n */\n totalWithdraws: AmountTotals;\n /**\n * \n * @type {number}\n * @memberof ClosedPositionsResponse\n */\n upperBinId: number;\n}\n\n/**\n * Check if a given object implements the ClosedPositionsResponse interface.\n */\nexport function instanceOfClosedPositionsResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"closedAt\" in value;\n isInstance = isInstance && \"createdAt\" in value;\n isInstance = isInstance && \"lowerBinId\" in value;\n isInstance = isInstance && \"pnl\" in value;\n isInstance = isInstance && \"pnlChangePct\" in value;\n isInstance = isInstance && \"poolAddress\" in value;\n isInstance = isInstance && \"positionAddress\" in value;\n isInstance = isInstance && \"totalClaimedFees\" in value;\n isInstance = isInstance && \"totalDeposits\" in value;\n isInstance = isInstance && \"totalWithdraws\" in value;\n isInstance = isInstance && \"upperBinId\" in value;\n\n return isInstance;\n}\n\nexport function ClosedPositionsResponseFromJSON(json: any): ClosedPositionsResponse {\n return ClosedPositionsResponseFromJSONTyped(json, false);\n}\n\nexport function ClosedPositionsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ClosedPositionsResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'closedAt': json['closed_at'],\n 'createdAt': json['created_at'],\n 'lowerBinId': json['lower_bin_id'],\n 'pnl': json['pnl'],\n 'pnlChangePct': json['pnl_change_pct'],\n 'poolAddress': json['pool_address'],\n 'positionAddress': json['position_address'],\n 'totalClaimedFees': AmountTotalsFromJSON(json['total_claimed_fees']),\n 'totalDeposits': AmountTotalsFromJSON(json['total_deposits']),\n 'totalWithdraws': AmountTotalsFromJSON(json['total_withdraws']),\n 'upperBinId': json['upper_bin_id'],\n };\n}\n\nexport function ClosedPositionsResponseToJSON(value?: ClosedPositionsResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'closed_at': value.closedAt,\n 'created_at': value.createdAt,\n 'lower_bin_id': value.lowerBinId,\n 'pnl': value.pnl,\n 'pnl_change_pct': value.pnlChangePct,\n 'pool_address': value.poolAddress,\n 'position_address': value.positionAddress,\n 'total_claimed_fees': AmountTotalsToJSON(value.totalClaimedFees),\n 'total_deposits': AmountTotalsToJSON(value.totalDeposits),\n 'total_withdraws': AmountTotalsToJSON(value.totalWithdraws),\n 'upper_bin_id': value.upperBinId,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface CumulativeMetrics\n */\nexport interface CumulativeMetrics {\n /**\n * \n * @type {number}\n * @memberof CumulativeMetrics\n */\n fees: number;\n /**\n * \n * @type {number}\n * @memberof CumulativeMetrics\n */\n volume: number;\n}\n\n/**\n * Check if a given object implements the CumulativeMetrics interface.\n */\nexport function instanceOfCumulativeMetrics(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"fees\" in value;\n isInstance = isInstance && \"volume\" in value;\n\n return isInstance;\n}\n\nexport function CumulativeMetricsFromJSON(json: any): CumulativeMetrics {\n return CumulativeMetricsFromJSONTyped(json, false);\n}\n\nexport function CumulativeMetricsFromJSONTyped(json: any, ignoreDiscriminator: boolean): CumulativeMetrics {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'fees': json['fees'],\n 'volume': json['volume'],\n };\n}\n\nexport function CumulativeMetricsToJSON(value?: CumulativeMetrics | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'fees': value.fees,\n 'volume': value.volume,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { AmountTotals } from './AmountTotals';\nimport {\n AmountTotalsFromJSON,\n AmountTotalsFromJSONTyped,\n AmountTotalsToJSON,\n} from './AmountTotals';\n\n/**\n * \n * @export\n * @interface CurrentPosition\n */\nexport interface CurrentPosition {\n /**\n * \n * @type {AmountTotals}\n * @memberof CurrentPosition\n */\n currentDeposits: AmountTotals;\n /**\n * \n * @type {AmountTotals}\n * @memberof CurrentPosition\n */\n unclaimedFees: AmountTotals;\n /**\n * \n * @type {number}\n * @memberof CurrentPosition\n */\n updatedAtSlot: number;\n}\n\n/**\n * Check if a given object implements the CurrentPosition interface.\n */\nexport function instanceOfCurrentPosition(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"currentDeposits\" in value;\n isInstance = isInstance && \"unclaimedFees\" in value;\n isInstance = isInstance && \"updatedAtSlot\" in value;\n\n return isInstance;\n}\n\nexport function CurrentPositionFromJSON(json: any): CurrentPosition {\n return CurrentPositionFromJSONTyped(json, false);\n}\n\nexport function CurrentPositionFromJSONTyped(json: any, ignoreDiscriminator: boolean): CurrentPosition {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'currentDeposits': AmountTotalsFromJSON(json['current_deposits']),\n 'unclaimedFees': AmountTotalsFromJSON(json['unclaimed_fees']),\n 'updatedAtSlot': json['updated_at_slot'],\n };\n}\n\nexport function CurrentPositionToJSON(value?: CurrentPosition | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'current_deposits': AmountTotalsToJSON(value.currentDeposits),\n 'unclaimed_fees': AmountTotalsToJSON(value.unclaimedFees),\n 'updated_at_slot': value.updatedAtSlot,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ErrorResponse\n */\nexport interface ErrorResponse {\n /**\n * \n * @type {string}\n * @memberof ErrorResponse\n */\n message: string;\n}\n\n/**\n * Check if a given object implements the ErrorResponse interface.\n */\nexport function instanceOfErrorResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"message\" in value;\n\n return isInstance;\n}\n\nexport function ErrorResponseFromJSON(json: any): ErrorResponse {\n return ErrorResponseFromJSONTyped(json, false);\n}\n\nexport function ErrorResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ErrorResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'message': json['message'],\n };\n}\n\nexport function ErrorResponseToJSON(value?: ErrorResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'message': value.message,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface GetGroupDetailsParams\n */\nexport interface GetGroupDetailsParams {\n /**\n * \n * @type {string}\n * @memberof GetGroupDetailsParams\n */\n lexicalOrderMints: string;\n}\n\n/**\n * Check if a given object implements the GetGroupDetailsParams interface.\n */\nexport function instanceOfGetGroupDetailsParams(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"lexicalOrderMints\" in value;\n\n return isInstance;\n}\n\nexport function GetGroupDetailsParamsFromJSON(json: any): GetGroupDetailsParams {\n return GetGroupDetailsParamsFromJSONTyped(json, false);\n}\n\nexport function GetGroupDetailsParamsFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetGroupDetailsParams {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'lexicalOrderMints': json['lexical_order_mints'],\n };\n}\n\nexport function GetGroupDetailsParamsToJSON(value?: GetGroupDetailsParams | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'lexical_order_mints': value.lexicalOrderMints,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface GetGroupsQuery\n */\nexport interface GetGroupsQuery {\n /**\n * Time window to aggregate fee tvl ratio. Returns Max\n * @type {string}\n * @memberof GetGroupsQuery\n */\n feeTvlRatioTw?: string | null;\n /**\n * Conditions to filter documents by field values\n * \n * Format: `<expr> [&& <expr> ...]`\n * \n * Where each expression is: `<field><op><value>`\n * \n * Allowed fields:\n * - Numeric: `tvl` `volume_*` `fee_*` `fee_tvl_ratio_*` `apr_*`\n * - Boolean: `is_blacklisted`\n * - Text: `pool_address` `name` `token_x` `token_y`\n * \n * Operators:\n * - Numeric: `=` `>` `>=` `<` `<=`\n * - Boolean: `=true` `=false`\n * - Text:\n * - exact match: `=<value>`\n * - multi-value OR: `=[value1|value2|...]`\n * \n * Notes:\n * - Multiple expressions are combined using logical **AND** (`&&`)\n * - Whitespace around operators is ignored\n * \n * Examples:\n * - `tvl>1000`\n * - `is_blacklisted=false && volume_24h>=50000`\n * @type {string}\n * @memberof GetGroupsQuery\n */\n filterBy?: string | null;\n /**\n * Page number (1-based)\n * @type {number}\n * @memberof GetGroupsQuery\n */\n page?: number | null;\n /**\n * Number of pools to return per page. Max 100\n * @type {number}\n * @memberof GetGroupsQuery\n */\n pageSize?: number | null;\n /**\n * Search query used to match pools by name, tokens, or address\n * @type {string}\n * @memberof GetGroupsQuery\n */\n query?: string | null;\n /**\n * Sort results by one or more fields\n * \n * Format:\n * - Time-windowed metrics: `<metric>_<window>:<direction>`\n * - Non-windowed metrics: `<field>:<direction>`\n * \n * - `direction`: `asc` or `desc`\n * - `window` (when applicable): `5m` `30m` `1h` `2h` `4h` `12h` `24h`\n * \n * Available fields:\n * - Time-windowed metrics: `volume_*` `fee_*` `fee_tvl_ratio_*` `apr_*`\n * - Non-windowed metrics: `tvl` `fee_pct` `bin_step` `pool_created_at` `farm_apy`\n * \n * Default: `volume_24h:desc`\n * \n * Examples:\n * - `volume_24h:desc`\n * - `fee_1h:asc`\n * - `tvl:desc`\n * @type {string}\n * @memberof GetGroupsQuery\n */\n sortBy?: string | null;\n /**\n * Time window to aggregate volume. Returns sum\n * @type {string}\n * @memberof GetGroupsQuery\n */\n volumeTw?: string | null;\n}\n\n/**\n * Check if a given object implements the GetGroupsQuery interface.\n */\nexport function instanceOfGetGroupsQuery(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function GetGroupsQueryFromJSON(json: any): GetGroupsQuery {\n return GetGroupsQueryFromJSONTyped(json, false);\n}\n\nexport function GetGroupsQueryFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetGroupsQuery {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'feeTvlRatioTw': !exists(json, 'fee_tvl_ratio_tw') ? undefined : json['fee_tvl_ratio_tw'],\n 'filterBy': !exists(json, 'filter_by') ? undefined : json['filter_by'],\n 'page': !exists(json, 'page') ? undefined : json['page'],\n 'pageSize': !exists(json, 'page_size') ? undefined : json['page_size'],\n 'query': !exists(json, 'query') ? undefined : json['query'],\n 'sortBy': !exists(json, 'sort_by') ? undefined : json['sort_by'],\n 'volumeTw': !exists(json, 'volume_tw') ? undefined : json['volume_tw'],\n };\n}\n\nexport function GetGroupsQueryToJSON(value?: GetGroupsQuery | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'fee_tvl_ratio_tw': value.feeTvlRatioTw,\n 'filter_by': value.filterBy,\n 'page': value.page,\n 'page_size': value.pageSize,\n 'query': value.query,\n 'sort_by': value.sortBy,\n 'volume_tw': value.volumeTw,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const GetOpenPortfolioSort = {\n CurrentBalances: 'current_balances',\n UnclaimedFee: 'unclaimed_fee',\n FeePerTvl24h: 'fee_per_tvl24h'\n} as const;\nexport type GetOpenPortfolioSort = typeof GetOpenPortfolioSort[keyof typeof GetOpenPortfolioSort];\n\n\nexport function GetOpenPortfolioSortFromJSON(json: any): GetOpenPortfolioSort {\n return GetOpenPortfolioSortFromJSONTyped(json, false);\n}\n\nexport function GetOpenPortfolioSortFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetOpenPortfolioSort {\n return json as GetOpenPortfolioSort;\n}\n\nexport function GetOpenPortfolioSortToJSON(value?: GetOpenPortfolioSort | null): any {\n return value as any;\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const SortDirection = {\n Asc: 'asc',\n Desc: 'desc'\n} as const;\nexport type SortDirection = typeof SortDirection[keyof typeof SortDirection];\n\n\nexport function SortDirectionFromJSON(json: any): SortDirection {\n return SortDirectionFromJSONTyped(json, false);\n}\n\nexport function SortDirectionFromJSONTyped(json: any, ignoreDiscriminator: boolean): SortDirection {\n return json as SortDirection;\n}\n\nexport function SortDirectionToJSON(value?: SortDirection | null): any {\n return value as any;\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { GetOpenPortfolioSort } from './GetOpenPortfolioSort';\nimport {\n GetOpenPortfolioSortFromJSON,\n GetOpenPortfolioSortFromJSONTyped,\n GetOpenPortfolioSortToJSON,\n} from './GetOpenPortfolioSort';\nimport type { SortDirection } from './SortDirection';\nimport {\n SortDirectionFromJSON,\n SortDirectionFromJSONTyped,\n SortDirectionToJSON,\n} from './SortDirection';\n\n/**\n * Query parameters for getting user's open portfolio\n * \n * Used to retrieve a paginated list of pools where the user has open (active) positions.\n * Supports sorting by various metrics and pagination.\n * @export\n * @interface GetOpenPortfolioQuery\n */\nexport interface GetOpenPortfolioQuery {\n /**\n * Page number for pagination (minimum: 1, default: 1)\n * @type {number}\n * @memberof GetOpenPortfolioQuery\n */\n page?: number;\n /**\n * Page size for pagination (default: 20, maximum: 50)\n * @type {number}\n * @memberof GetOpenPortfolioQuery\n */\n pageSize?: number;\n /**\n * \n * @type {GetOpenPortfolioSort}\n * @memberof GetOpenPortfolioQuery\n */\n sortBy?: GetOpenPortfolioSort;\n /**\n * \n * @type {SortDirection}\n * @memberof GetOpenPortfolioQuery\n */\n sortDirection?: SortDirection;\n /**\n * User's wallet address\n * @type {string}\n * @memberof GetOpenPortfolioQuery\n */\n user: string;\n}\n\n/**\n * Check if a given object implements the GetOpenPortfolioQuery interface.\n */\nexport function instanceOfGetOpenPortfolioQuery(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"user\" in value;\n\n return isInstance;\n}\n\nexport function GetOpenPortfolioQueryFromJSON(json: any): GetOpenPortfolioQuery {\n return GetOpenPortfolioQueryFromJSONTyped(json, false);\n}\n\nexport function GetOpenPortfolioQueryFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetOpenPortfolioQuery {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'page': !exists(json, 'page') ? undefined : json['page'],\n 'pageSize': !exists(json, 'page_size') ? undefined : json['page_size'],\n 'sortBy': !exists(json, 'sort_by') ? undefined : GetOpenPortfolioSortFromJSON(json['sort_by']),\n 'sortDirection': !exists(json, 'sort_direction') ? undefined : SortDirectionFromJSON(json['sort_direction']),\n 'user': json['user'],\n };\n}\n\nexport function GetOpenPortfolioQueryToJSON(value?: GetOpenPortfolioQuery | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'page': value.page,\n 'page_size': value.pageSize,\n 'sort_by': GetOpenPortfolioSortToJSON(value.sortBy),\n 'sort_direction': SortDirectionToJSON(value.sortDirection),\n 'user': value.user,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * Aggregated portfolio data for a single pool\n * @export\n * @interface PoolOpenPortfolioItem\n */\nexport interface PoolOpenPortfolioItem {\n /**\n * Current balance in USD\n * @type {string}\n * @memberof PoolOpenPortfolioItem\n */\n balances: string;\n /**\n * Current balance in SOL\n * @type {string}\n * @memberof PoolOpenPortfolioItem\n */\n balancesSol?: string | null;\n /**\n * \n * @type {number}\n * @memberof PoolOpenPortfolioItem\n */\n baseFee: number;\n /**\n * \n * @type {number}\n * @memberof PoolOpenPortfolioItem\n */\n binStep: number;\n /**\n * \n * @type {number}\n * @memberof PoolOpenPortfolioItem\n */\n collectFeeMode: number;\n /**\n * User's fee per tvl in rolling 24h\n * @type {string}\n * @memberof PoolOpenPortfolioItem\n */\n feePerTvl24h: string;\n /**\n * List of position addresses in pool\n * @type {Array<string>}\n * @memberof PoolOpenPortfolioItem\n */\n listPositions: Array<string>;\n /**\n * Number of open positions\n * @type {number}\n * @memberof PoolOpenPortfolioItem\n */\n openPositionCount: number;\n /**\n * Pool dynamic fields\n * Pool is out of range if one of the user's positions is out of range\n * If this is None, it means we couldn't determine out_of_range status\n * @type {boolean}\n * @memberof PoolOpenPortfolioItem\n */\n outOfRange?: boolean | null;\n /**\n * Live PnL\n * @type {string}\n * @memberof PoolOpenPortfolioItem\n */\n pnl: string;\n /**\n * Live PnL percentage change\n * @type {string}\n * @memberof PoolOpenPortfolioItem\n */\n pnlPctChange: string;\n /**\n * Live PnL in SOL\n * @type {string}\n * @memberof PoolOpenPortfolioItem\n */\n pnlSol?: string | null;\n /**\n * Live PnL percentage change (SOL)\n * @type {string}\n * @memberof PoolOpenPortfolioItem\n */\n pnlSolPctChange?: string | null;\n /**\n * \n * @type {string}\n * @memberof PoolOpenPortfolioItem\n */\n poolAddress: string;\n /**\n * Current pool price\n * @type {number}\n * @memberof PoolOpenPortfolioItem\n */\n poolPrice?: number | null;\n /**\n * \n * @type {number}\n * @memberof PoolOpenPortfolioItem\n */\n poolStateUpdatedAtBlockTime?: number | null;\n /**\n * Tracing metrics\n * @type {number}\n * @memberof PoolOpenPortfolioItem\n */\n poolStateUpdatedAtSlot?: number | null;\n /**\n * List of position addresses that are out of range\n * @type {Array<string>}\n * @memberof PoolOpenPortfolioItem\n */\n positionsOutOfRange: Array<string>;\n /**\n * \n * @type {string}\n * @memberof PoolOpenPortfolioItem\n */\n rewardX: string;\n /**\n * \n * @type {string}\n * @memberof PoolOpenPortfolioItem\n */\n rewardY: string;\n /**\n * \n * @type {string}\n * @memberof PoolOpenPortfolioItem\n */\n tokenX: string;\n /**\n * \n * @type {string}\n * @memberof PoolOpenPortfolioItem\n */\n tokenXIcon: string;\n /**\n * \n * @type {string}\n * @memberof PoolOpenPortfolioItem\n */\n tokenXMint: string;\n /**\n * \n * @type {string}\n * @memberof PoolOpenPortfolioItem\n */\n tokenY: string;\n /**\n * \n * @type {string}\n * @memberof PoolOpenPortfolioItem\n */\n tokenYIcon: string;\n /**\n * \n * @type {string}\n * @memberof PoolOpenPortfolioItem\n */\n tokenYMint: string;\n /**\n * Total deposit in USD\n * @type {string}\n * @memberof PoolOpenPortfolioItem\n */\n totalDeposit: string;\n /**\n * Total deposit in SOL (historical per-event SOL price)\n * @type {string}\n * @memberof PoolOpenPortfolioItem\n */\n totalDepositSol?: string | null;\n /**\n * Current unclaimed fee in USD\n * @type {string}\n * @memberof PoolOpenPortfolioItem\n */\n unclaimedFees: string;\n /**\n * Current unclaimed fee in SOL\n * @type {string}\n * @memberof PoolOpenPortfolioItem\n */\n unclaimedFeesSol?: string | null;\n}\n\n/**\n * Check if a given object implements the PoolOpenPortfolioItem interface.\n */\nexport function instanceOfPoolOpenPortfolioItem(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"balances\" in value;\n isInstance = isInstance && \"baseFee\" in value;\n isInstance = isInstance && \"binStep\" in value;\n isInstance = isInstance && \"collectFeeMode\" in value;\n isInstance = isInstance && \"feePerTvl24h\" in value;\n isInstance = isInstance && \"listPositions\" in value;\n isInstance = isInstance && \"openPositionCount\" in value;\n isInstance = isInstance && \"pnl\" in value;\n isInstance = isInstance && \"pnlPctChange\" in value;\n isInstance = isInstance && \"poolAddress\" in value;\n isInstance = isInstance && \"positionsOutOfRange\" in value;\n isInstance = isInstance && \"rewardX\" in value;\n isInstance = isInstance && \"rewardY\" in value;\n isInstance = isInstance && \"tokenX\" in value;\n isInstance = isInstance && \"tokenXIcon\" in value;\n isInstance = isInstance && \"tokenXMint\" in value;\n isInstance = isInstance && \"tokenY\" in value;\n isInstance = isInstance && \"tokenYIcon\" in value;\n isInstance = isInstance && \"tokenYMint\" in value;\n isInstance = isInstance && \"totalDeposit\" in value;\n isInstance = isInstance && \"unclaimedFees\" in value;\n\n return isInstance;\n}\n\nexport function PoolOpenPortfolioItemFromJSON(json: any): PoolOpenPortfolioItem {\n return PoolOpenPortfolioItemFromJSONTyped(json, false);\n}\n\nexport function PoolOpenPortfolioItemFromJSONTyped(json: any, ignoreDiscriminator: boolean): PoolOpenPortfolioItem {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'balances': json['balances'],\n 'balancesSol': !exists(json, 'balancesSol') ? undefined : json['balancesSol'],\n 'baseFee': json['baseFee'],\n 'binStep': json['binStep'],\n 'collectFeeMode': json['collectFeeMode'],\n 'feePerTvl24h': json['feePerTvl24h'],\n 'listPositions': json['listPositions'],\n 'openPositionCount': json['openPositionCount'],\n 'outOfRange': !exists(json, 'outOfRange') ? undefined : json['outOfRange'],\n 'pnl': json['pnl'],\n 'pnlPctChange': json['pnlPctChange'],\n 'pnlSol': !exists(json, 'pnlSol') ? undefined : json['pnlSol'],\n 'pnlSolPctChange': !exists(json, 'pnlSolPctChange') ? undefined : json['pnlSolPctChange'],\n 'poolAddress': json['poolAddress'],\n 'poolPrice': !exists(json, 'poolPrice') ? undefined : json['poolPrice'],\n 'poolStateUpdatedAtBlockTime': !exists(json, 'poolStateUpdatedAtBlockTime') ? undefined : json['poolStateUpdatedAtBlockTime'],\n 'poolStateUpdatedAtSlot': !exists(json, 'poolStateUpdatedAtSlot') ? undefined : json['poolStateUpdatedAtSlot'],\n 'positionsOutOfRange': json['positionsOutOfRange'],\n 'rewardX': json['rewardX'],\n 'rewardY': json['rewardY'],\n 'tokenX': json['tokenX'],\n 'tokenXIcon': json['tokenXIcon'],\n 'tokenXMint': json['tokenXMint'],\n 'tokenY': json['tokenY'],\n 'tokenYIcon': json['tokenYIcon'],\n 'tokenYMint': json['tokenYMint'],\n 'totalDeposit': json['totalDeposit'],\n 'totalDepositSol': !exists(json, 'totalDepositSol') ? undefined : json['totalDepositSol'],\n 'unclaimedFees': json['unclaimedFees'],\n 'unclaimedFeesSol': !exists(json, 'unclaimedFeesSol') ? undefined : json['unclaimedFeesSol'],\n };\n}\n\nexport function PoolOpenPortfolioItemToJSON(value?: PoolOpenPortfolioItem | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'balances': value.balances,\n 'balancesSol': value.balancesSol,\n 'baseFee': value.baseFee,\n 'binStep': value.binStep,\n 'collectFeeMode': value.collectFeeMode,\n 'feePerTvl24h': value.feePerTvl24h,\n 'listPositions': value.listPositions,\n 'openPositionCount': value.openPositionCount,\n 'outOfRange': value.outOfRange,\n 'pnl': value.pnl,\n 'pnlPctChange': value.pnlPctChange,\n 'pnlSol': value.pnlSol,\n 'pnlSolPctChange': value.pnlSolPctChange,\n 'poolAddress': value.poolAddress,\n 'poolPrice': value.poolPrice,\n 'poolStateUpdatedAtBlockTime': value.poolStateUpdatedAtBlockTime,\n 'poolStateUpdatedAtSlot': value.poolStateUpdatedAtSlot,\n 'positionsOutOfRange': value.positionsOutOfRange,\n 'rewardX': value.rewardX,\n 'rewardY': value.rewardY,\n 'tokenX': value.tokenX,\n 'tokenXIcon': value.tokenXIcon,\n 'tokenXMint': value.tokenXMint,\n 'tokenY': value.tokenY,\n 'tokenYIcon': value.tokenYIcon,\n 'tokenYMint': value.tokenYMint,\n 'totalDeposit': value.totalDeposit,\n 'totalDepositSol': value.totalDepositSol,\n 'unclaimedFees': value.unclaimedFees,\n 'unclaimedFeesSol': value.unclaimedFeesSol,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * Total metrics related to user portfolio\n * @export\n * @interface TotalMetrics\n */\nexport interface TotalMetrics {\n /**\n * Current balance in USD\n * @type {string}\n * @memberof TotalMetrics\n */\n balances: string;\n /**\n * Current balance in SOL\n * @type {string}\n * @memberof TotalMetrics\n */\n balancesSol?: string | null;\n /**\n * Current pnl in USD\n * @type {string}\n * @memberof TotalMetrics\n */\n pnl: string;\n /**\n * PnL percent change (USD)\n * @type {string}\n * @memberof TotalMetrics\n */\n pnlPctChange: string;\n /**\n * Current pnl in SOL\n * @type {string}\n * @memberof TotalMetrics\n */\n pnlSol?: string | null;\n /**\n * PnL percent change (SOL)\n * @type {string}\n * @memberof TotalMetrics\n */\n pnlSolPctChange?: string | null;\n /**\n * Total number of open positions across all pools\n * @type {number}\n * @memberof TotalMetrics\n */\n totalPositions: number;\n /**\n * Current unclaimed fees in USD\n * @type {string}\n * @memberof TotalMetrics\n */\n unclaimedFees: string;\n /**\n * Current unclaimed fees in SOL\n * @type {string}\n * @memberof TotalMetrics\n */\n unclaimedFeesSol?: string | null;\n}\n\n/**\n * Check if a given object implements the TotalMetrics interface.\n */\nexport function instanceOfTotalMetrics(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"balances\" in value;\n isInstance = isInstance && \"pnl\" in value;\n isInstance = isInstance && \"pnlPctChange\" in value;\n isInstance = isInstance && \"totalPositions\" in value;\n isInstance = isInstance && \"unclaimedFees\" in value;\n\n return isInstance;\n}\n\nexport function TotalMetricsFromJSON(json: any): TotalMetrics {\n return TotalMetricsFromJSONTyped(json, false);\n}\n\nexport function TotalMetricsFromJSONTyped(json: any, ignoreDiscriminator: boolean): TotalMetrics {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'balances': json['balances'],\n 'balancesSol': !exists(json, 'balancesSol') ? undefined : json['balancesSol'],\n 'pnl': json['pnl'],\n 'pnlPctChange': json['pnlPctChange'],\n 'pnlSol': !exists(json, 'pnlSol') ? undefined : json['pnlSol'],\n 'pnlSolPctChange': !exists(json, 'pnlSolPctChange') ? undefined : json['pnlSolPctChange'],\n 'totalPositions': json['totalPositions'],\n 'unclaimedFees': json['unclaimedFees'],\n 'unclaimedFeesSol': !exists(json, 'unclaimedFeesSol') ? undefined : json['unclaimedFeesSol'],\n };\n}\n\nexport function TotalMetricsToJSON(value?: TotalMetrics | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'balances': value.balances,\n 'balancesSol': value.balancesSol,\n 'pnl': value.pnl,\n 'pnlPctChange': value.pnlPctChange,\n 'pnlSol': value.pnlSol,\n 'pnlSolPctChange': value.pnlSolPctChange,\n 'totalPositions': value.totalPositions,\n 'unclaimedFees': value.unclaimedFees,\n 'unclaimedFeesSol': value.unclaimedFeesSol,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { PoolOpenPortfolioItem } from './PoolOpenPortfolioItem';\nimport {\n PoolOpenPortfolioItemFromJSON,\n PoolOpenPortfolioItemFromJSONTyped,\n PoolOpenPortfolioItemToJSON,\n} from './PoolOpenPortfolioItem';\nimport type { TotalMetrics } from './TotalMetrics';\nimport {\n TotalMetricsFromJSON,\n TotalMetricsFromJSONTyped,\n TotalMetricsToJSON,\n} from './TotalMetrics';\n\n/**\n * \n * @export\n * @interface GetOpenPortfolioResponse\n */\nexport interface GetOpenPortfolioResponse {\n /**\n * \n * @type {boolean}\n * @memberof GetOpenPortfolioResponse\n */\n hasNext: boolean;\n /**\n * \n * @type {number}\n * @memberof GetOpenPortfolioResponse\n */\n page: number;\n /**\n * \n * @type {number}\n * @memberof GetOpenPortfolioResponse\n */\n pageSize: number;\n /**\n * \n * @type {Array<PoolOpenPortfolioItem>}\n * @memberof GetOpenPortfolioResponse\n */\n pools: Array<PoolOpenPortfolioItem>;\n /**\n * \n * @type {string}\n * @memberof GetOpenPortfolioResponse\n */\n solPrice?: string | null;\n /**\n * \n * @type {TotalMetrics}\n * @memberof GetOpenPortfolioResponse\n */\n total?: TotalMetrics | null;\n /**\n * \n * @type {number}\n * @memberof GetOpenPortfolioResponse\n */\n totalCount: number;\n /**\n * Total number of open positions across all pools\n * @type {number}\n * @memberof GetOpenPortfolioResponse\n */\n totalPositions: number;\n}\n\n/**\n * Check if a given object implements the GetOpenPortfolioResponse interface.\n */\nexport function instanceOfGetOpenPortfolioResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"hasNext\" in value;\n isInstance = isInstance && \"page\" in value;\n isInstance = isInstance && \"pageSize\" in value;\n isInstance = isInstance && \"pools\" in value;\n isInstance = isInstance && \"totalCount\" in value;\n isInstance = isInstance && \"totalPositions\" in value;\n\n return isInstance;\n}\n\nexport function GetOpenPortfolioResponseFromJSON(json: any): GetOpenPortfolioResponse {\n return GetOpenPortfolioResponseFromJSONTyped(json, false);\n}\n\nexport function GetOpenPortfolioResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetOpenPortfolioResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'hasNext': json['hasNext'],\n 'page': json['page'],\n 'pageSize': json['pageSize'],\n 'pools': ((json['pools'] as Array<any>).map(PoolOpenPortfolioItemFromJSON)),\n 'solPrice': !exists(json, 'solPrice') ? undefined : json['solPrice'],\n 'total': !exists(json, 'total') ? undefined : TotalMetricsFromJSON(json['total']),\n 'totalCount': json['totalCount'],\n 'totalPositions': json['totalPositions'],\n };\n}\n\nexport function GetOpenPortfolioResponseToJSON(value?: GetOpenPortfolioResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'hasNext': value.hasNext,\n 'page': value.page,\n 'pageSize': value.pageSize,\n 'pools': ((value.pools as Array<any>).map(PoolOpenPortfolioItemToJSON)),\n 'solPrice': value.solPrice,\n 'total': TotalMetricsToJSON(value.total),\n 'totalCount': value.totalCount,\n 'totalPositions': value.totalPositions,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface GetPoolParams\n */\nexport interface GetPoolParams {\n /**\n * Base58-encoded pool address\n * @type {string}\n * @memberof GetPoolParams\n */\n address: string;\n}\n\n/**\n * Check if a given object implements the GetPoolParams interface.\n */\nexport function instanceOfGetPoolParams(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"address\" in value;\n\n return isInstance;\n}\n\nexport function GetPoolParamsFromJSON(json: any): GetPoolParams {\n return GetPoolParamsFromJSONTyped(json, false);\n}\n\nexport function GetPoolParamsFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetPoolParams {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'address': json['address'],\n };\n}\n\nexport function GetPoolParamsToJSON(value?: GetPoolParams | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'address': value.address,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const PositionStatus = {\n Open: 'open',\n Closed: 'closed',\n All: 'all'\n} as const;\nexport type PositionStatus = typeof PositionStatus[keyof typeof PositionStatus];\n\n\nexport function PositionStatusFromJSON(json: any): PositionStatus {\n return PositionStatusFromJSONTyped(json, false);\n}\n\nexport function PositionStatusFromJSONTyped(json: any, ignoreDiscriminator: boolean): PositionStatus {\n return json as PositionStatus;\n}\n\nexport function PositionStatusToJSON(value?: PositionStatus | null): any {\n return value as any;\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { PositionStatus } from './PositionStatus';\nimport {\n PositionStatusFromJSON,\n PositionStatusFromJSONTyped,\n PositionStatusToJSON,\n} from './PositionStatus';\n\n/**\n * Query parameters for getting position PnL data\n * @export\n * @interface GetPoolPositionPnLQuery\n */\nexport interface GetPoolPositionPnLQuery {\n /**\n * Page number for pagination (minimum: 1, default: 1)\n * @type {number}\n * @memberof GetPoolPositionPnLQuery\n */\n page?: number;\n /**\n * Page size for pagination (minimum: 1, maximum: 100, default: 20)\n * @type {number}\n * @memberof GetPoolPositionPnLQuery\n */\n pageSize?: number;\n /**\n * \n * @type {PositionStatus}\n * @memberof GetPoolPositionPnLQuery\n */\n status?: PositionStatus;\n /**\n * The user's wallet address\n * @type {string}\n * @memberof GetPoolPositionPnLQuery\n */\n user: string;\n}\n\n/**\n * Check if a given object implements the GetPoolPositionPnLQuery interface.\n */\nexport function instanceOfGetPoolPositionPnLQuery(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"user\" in value;\n\n return isInstance;\n}\n\nexport function GetPoolPositionPnLQueryFromJSON(json: any): GetPoolPositionPnLQuery {\n return GetPoolPositionPnLQueryFromJSONTyped(json, false);\n}\n\nexport function GetPoolPositionPnLQueryFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetPoolPositionPnLQuery {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'page': !exists(json, 'page') ? undefined : json['page'],\n 'pageSize': !exists(json, 'page_size') ? undefined : json['page_size'],\n 'status': !exists(json, 'status') ? undefined : PositionStatusFromJSON(json['status']),\n 'user': json['user'],\n };\n}\n\nexport function GetPoolPositionPnLQueryToJSON(value?: GetPoolPositionPnLQuery | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'page': value.page,\n 'page_size': value.pageSize,\n 'status': PositionStatusToJSON(value.status),\n 'user': value.user,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenAmount\n */\nexport interface TokenAmount {\n /**\n * \n * @type {string}\n * @memberof TokenAmount\n */\n amount: string;\n /**\n * \n * @type {string}\n * @memberof TokenAmount\n */\n amountSol?: string | null;\n /**\n * \n * @type {string}\n * @memberof TokenAmount\n */\n usd: string;\n}\n\n/**\n * Check if a given object implements the TokenAmount interface.\n */\nexport function instanceOfTokenAmount(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"amount\" in value;\n isInstance = isInstance && \"usd\" in value;\n\n return isInstance;\n}\n\nexport function TokenAmountFromJSON(json: any): TokenAmount {\n return TokenAmountFromJSONTyped(json, false);\n}\n\nexport function TokenAmountFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenAmount {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'amount': json['amount'],\n 'amountSol': !exists(json, 'amountSol') ? undefined : json['amountSol'],\n 'usd': json['usd'],\n };\n}\n\nexport function TokenAmountToJSON(value?: TokenAmount | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'amount': value.amount,\n 'amountSol': value.amountSol,\n 'usd': value.usd,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TotalUsd\n */\nexport interface TotalUsd {\n /**\n * \n * @type {string}\n * @memberof TotalUsd\n */\n sol?: string | null;\n /**\n * \n * @type {string}\n * @memberof TotalUsd\n */\n usd: string;\n}\n\n/**\n * Check if a given object implements the TotalUsd interface.\n */\nexport function instanceOfTotalUsd(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"usd\" in value;\n\n return isInstance;\n}\n\nexport function TotalUsdFromJSON(json: any): TotalUsd {\n return TotalUsdFromJSONTyped(json, false);\n}\n\nexport function TotalUsdFromJSONTyped(json: any, ignoreDiscriminator: boolean): TotalUsd {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'sol': !exists(json, 'sol') ? undefined : json['sol'],\n 'usd': json['usd'],\n };\n}\n\nexport function TotalUsdToJSON(value?: TotalUsd | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'sol': value.sol,\n 'usd': value.usd,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { TokenAmount } from './TokenAmount';\nimport {\n TokenAmountFromJSON,\n TokenAmountFromJSONTyped,\n TokenAmountToJSON,\n} from './TokenAmount';\nimport type { TotalUsd } from './TotalUsd';\nimport {\n TotalUsdFromJSON,\n TotalUsdFromJSONTyped,\n TotalUsdToJSON,\n} from './TotalUsd';\n\n/**\n * \n * @export\n * @interface TokenPairWithTotal\n */\nexport interface TokenPairWithTotal {\n /**\n * \n * @type {TokenAmount}\n * @memberof TokenPairWithTotal\n */\n tokenX: TokenAmount;\n /**\n * \n * @type {TokenAmount}\n * @memberof TokenPairWithTotal\n */\n tokenY: TokenAmount;\n /**\n * \n * @type {TotalUsd}\n * @memberof TokenPairWithTotal\n */\n total: TotalUsd;\n}\n\n/**\n * Check if a given object implements the TokenPairWithTotal interface.\n */\nexport function instanceOfTokenPairWithTotal(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"tokenX\" in value;\n isInstance = isInstance && \"tokenY\" in value;\n isInstance = isInstance && \"total\" in value;\n\n return isInstance;\n}\n\nexport function TokenPairWithTotalFromJSON(json: any): TokenPairWithTotal {\n return TokenPairWithTotalFromJSONTyped(json, false);\n}\n\nexport function TokenPairWithTotalFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenPairWithTotal {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'tokenX': TokenAmountFromJSON(json['tokenX']),\n 'tokenY': TokenAmountFromJSON(json['tokenY']),\n 'total': TotalUsdFromJSON(json['total']),\n };\n}\n\nexport function TokenPairWithTotalToJSON(value?: TokenPairWithTotal | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'tokenX': TokenAmountToJSON(value.tokenX),\n 'tokenY': TokenAmountToJSON(value.tokenY),\n 'total': TotalUsdToJSON(value.total),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { TokenAmount } from './TokenAmount';\nimport {\n TokenAmountFromJSON,\n TokenAmountFromJSONTyped,\n TokenAmountToJSON,\n} from './TokenAmount';\n\n/**\n * \n * @export\n * @interface UnrealizedPnL\n */\nexport interface UnrealizedPnL {\n /**\n * \n * @type {TokenAmount}\n * @memberof UnrealizedPnL\n */\n balanceTokenX: TokenAmount;\n /**\n * \n * @type {TokenAmount}\n * @memberof UnrealizedPnL\n */\n balanceTokenY: TokenAmount;\n /**\n * Total current position balances in USD\n * @type {number}\n * @memberof UnrealizedPnL\n */\n balances: number;\n /**\n * Total current position balances in SOL\n * @type {string}\n * @memberof UnrealizedPnL\n */\n balancesSol?: string | null;\n /**\n * \n * @type {TokenAmount}\n * @memberof UnrealizedPnL\n */\n unclaimedFeeTokenX: TokenAmount;\n /**\n * \n * @type {TokenAmount}\n * @memberof UnrealizedPnL\n */\n unclaimedFeeTokenY: TokenAmount;\n /**\n * \n * @type {TokenAmount}\n * @memberof UnrealizedPnL\n */\n unclaimedRewardTokenX: TokenAmount;\n /**\n * \n * @type {TokenAmount}\n * @memberof UnrealizedPnL\n */\n unclaimedRewardTokenY: TokenAmount;\n}\n\n/**\n * Check if a given object implements the UnrealizedPnL interface.\n */\nexport function instanceOfUnrealizedPnL(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"balanceTokenX\" in value;\n isInstance = isInstance && \"balanceTokenY\" in value;\n isInstance = isInstance && \"balances\" in value;\n isInstance = isInstance && \"unclaimedFeeTokenX\" in value;\n isInstance = isInstance && \"unclaimedFeeTokenY\" in value;\n isInstance = isInstance && \"unclaimedRewardTokenX\" in value;\n isInstance = isInstance && \"unclaimedRewardTokenY\" in value;\n\n return isInstance;\n}\n\nexport function UnrealizedPnLFromJSON(json: any): UnrealizedPnL {\n return UnrealizedPnLFromJSONTyped(json, false);\n}\n\nexport function UnrealizedPnLFromJSONTyped(json: any, ignoreDiscriminator: boolean): UnrealizedPnL {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'balanceTokenX': TokenAmountFromJSON(json['balanceTokenX']),\n 'balanceTokenY': TokenAmountFromJSON(json['balanceTokenY']),\n 'balances': json['balances'],\n 'balancesSol': !exists(json, 'balancesSol') ? undefined : json['balancesSol'],\n 'unclaimedFeeTokenX': TokenAmountFromJSON(json['unclaimedFeeTokenX']),\n 'unclaimedFeeTokenY': TokenAmountFromJSON(json['unclaimedFeeTokenY']),\n 'unclaimedRewardTokenX': TokenAmountFromJSON(json['unclaimedRewardTokenX']),\n 'unclaimedRewardTokenY': TokenAmountFromJSON(json['unclaimedRewardTokenY']),\n };\n}\n\nexport function UnrealizedPnLToJSON(value?: UnrealizedPnL | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'balanceTokenX': TokenAmountToJSON(value.balanceTokenX),\n 'balanceTokenY': TokenAmountToJSON(value.balanceTokenY),\n 'balances': value.balances,\n 'balancesSol': value.balancesSol,\n 'unclaimedFeeTokenX': TokenAmountToJSON(value.unclaimedFeeTokenX),\n 'unclaimedFeeTokenY': TokenAmountToJSON(value.unclaimedFeeTokenY),\n 'unclaimedRewardTokenX': TokenAmountToJSON(value.unclaimedRewardTokenX),\n 'unclaimedRewardTokenY': TokenAmountToJSON(value.unclaimedRewardTokenY),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { TokenPairWithTotal } from './TokenPairWithTotal';\nimport {\n TokenPairWithTotalFromJSON,\n TokenPairWithTotalFromJSONTyped,\n TokenPairWithTotalToJSON,\n} from './TokenPairWithTotal';\nimport type { UnrealizedPnL } from './UnrealizedPnL';\nimport {\n UnrealizedPnLFromJSON,\n UnrealizedPnLFromJSONTyped,\n UnrealizedPnLToJSON,\n} from './UnrealizedPnL';\n\n/**\n * \n * @export\n * @interface PositionPnLData\n */\nexport interface PositionPnLData {\n /**\n * \n * @type {TokenPairWithTotal}\n * @memberof PositionPnLData\n */\n allTimeDeposits: TokenPairWithTotal;\n /**\n * \n * @type {TokenPairWithTotal}\n * @memberof PositionPnLData\n */\n allTimeFees: TokenPairWithTotal;\n /**\n * \n * @type {TokenPairWithTotal}\n * @memberof PositionPnLData\n */\n allTimeWithdrawals: TokenPairWithTotal;\n /**\n * \n * @type {number}\n * @memberof PositionPnLData\n */\n closedAt?: number | null;\n /**\n * \n * @type {number}\n * @memberof PositionPnLData\n */\n createdAt?: number | null;\n /**\n * User's fee per tvl in rolling 24h\n * @type {string}\n * @memberof PositionPnLData\n */\n feePerTvl24h: string;\n /**\n * \n * @type {boolean}\n * @memberof PositionPnLData\n */\n isClosed: boolean;\n /**\n * \n * @type {boolean}\n * @memberof PositionPnLData\n */\n isOutOfRange?: boolean | null;\n /**\n * \n * @type {number}\n * @memberof PositionPnLData\n */\n lowerBinId: number;\n /**\n * \n * @type {string}\n * @memberof PositionPnLData\n */\n maxPrice: string;\n /**\n * \n * @type {string}\n * @memberof PositionPnLData\n */\n minPrice: string;\n /**\n * \n * @type {string}\n * @memberof PositionPnLData\n */\n pnlPctChange: string;\n /**\n * \n * @type {number}\n * @memberof PositionPnLData\n */\n pnlSol?: number | null;\n /**\n * \n * @type {number}\n * @memberof PositionPnLData\n */\n pnlSolPctChange?: number | null;\n /**\n * \n * @type {string}\n * @memberof PositionPnLData\n */\n pnlUsd: string;\n /**\n * \n * @type {number}\n * @memberof PositionPnLData\n */\n poolActiveBinId?: number | null;\n /**\n * \n * @type {string}\n * @memberof PositionPnLData\n */\n poolActivePrice?: string | null;\n /**\n * \n * @type {string}\n * @memberof PositionPnLData\n */\n positionAddress: string;\n /**\n * \n * @type {UnrealizedPnL}\n * @memberof PositionPnLData\n */\n unrealizedPnl?: UnrealizedPnL | null;\n /**\n * \n * @type {number}\n * @memberof PositionPnLData\n */\n upperBinId: number;\n}\n\n/**\n * Check if a given object implements the PositionPnLData interface.\n */\nexport function instanceOfPositionPnLData(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"allTimeDeposits\" in value;\n isInstance = isInstance && \"allTimeFees\" in value;\n isInstance = isInstance && \"allTimeWithdrawals\" in value;\n isInstance = isInstance && \"feePerTvl24h\" in value;\n isInstance = isInstance && \"isClosed\" in value;\n isInstance = isInstance && \"lowerBinId\" in value;\n isInstance = isInstance && \"maxPrice\" in value;\n isInstance = isInstance && \"minPrice\" in value;\n isInstance = isInstance && \"pnlPctChange\" in value;\n isInstance = isInstance && \"pnlUsd\" in value;\n isInstance = isInstance && \"positionAddress\" in value;\n isInstance = isInstance && \"upperBinId\" in value;\n\n return isInstance;\n}\n\nexport function PositionPnLDataFromJSON(json: any): PositionPnLData {\n return PositionPnLDataFromJSONTyped(json, false);\n}\n\nexport function PositionPnLDataFromJSONTyped(json: any, ignoreDiscriminator: boolean): PositionPnLData {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'allTimeDeposits': TokenPairWithTotalFromJSON(json['allTimeDeposits']),\n 'allTimeFees': TokenPairWithTotalFromJSON(json['allTimeFees']),\n 'allTimeWithdrawals': TokenPairWithTotalFromJSON(json['allTimeWithdrawals']),\n 'closedAt': !exists(json, 'closedAt') ? undefined : json['closedAt'],\n 'createdAt': !exists(json, 'createdAt') ? undefined : json['createdAt'],\n 'feePerTvl24h': json['feePerTvl24h'],\n 'isClosed': json['isClosed'],\n 'isOutOfRange': !exists(json, 'isOutOfRange') ? undefined : json['isOutOfRange'],\n 'lowerBinId': json['lowerBinId'],\n 'maxPrice': json['maxPrice'],\n 'minPrice': json['minPrice'],\n 'pnlPctChange': json['pnlPctChange'],\n 'pnlSol': !exists(json, 'pnlSol') ? undefined : json['pnlSol'],\n 'pnlSolPctChange': !exists(json, 'pnlSolPctChange') ? undefined : json['pnlSolPctChange'],\n 'pnlUsd': json['pnlUsd'],\n 'poolActiveBinId': !exists(json, 'poolActiveBinId') ? undefined : json['poolActiveBinId'],\n 'poolActivePrice': !exists(json, 'poolActivePrice') ? undefined : json['poolActivePrice'],\n 'positionAddress': json['positionAddress'],\n 'unrealizedPnl': !exists(json, 'unrealizedPnl') ? undefined : UnrealizedPnLFromJSON(json['unrealizedPnl']),\n 'upperBinId': json['upperBinId'],\n };\n}\n\nexport function PositionPnLDataToJSON(value?: PositionPnLData | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'allTimeDeposits': TokenPairWithTotalToJSON(value.allTimeDeposits),\n 'allTimeFees': TokenPairWithTotalToJSON(value.allTimeFees),\n 'allTimeWithdrawals': TokenPairWithTotalToJSON(value.allTimeWithdrawals),\n 'closedAt': value.closedAt,\n 'createdAt': value.createdAt,\n 'feePerTvl24h': value.feePerTvl24h,\n 'isClosed': value.isClosed,\n 'isOutOfRange': value.isOutOfRange,\n 'lowerBinId': value.lowerBinId,\n 'maxPrice': value.maxPrice,\n 'minPrice': value.minPrice,\n 'pnlPctChange': value.pnlPctChange,\n 'pnlSol': value.pnlSol,\n 'pnlSolPctChange': value.pnlSolPctChange,\n 'pnlUsd': value.pnlUsd,\n 'poolActiveBinId': value.poolActiveBinId,\n 'poolActivePrice': value.poolActivePrice,\n 'positionAddress': value.positionAddress,\n 'unrealizedPnl': UnrealizedPnLToJSON(value.unrealizedPnl),\n 'upperBinId': value.upperBinId,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { PositionPnLData } from './PositionPnLData';\nimport {\n PositionPnLDataFromJSON,\n PositionPnLDataFromJSONTyped,\n PositionPnLDataToJSON,\n} from './PositionPnLData';\n\n/**\n * \n * @export\n * @interface GetPoolPositionPnLResponse\n */\nexport interface GetPoolPositionPnLResponse {\n /**\n * \n * @type {boolean}\n * @memberof GetPoolPositionPnLResponse\n */\n hasNext: boolean;\n /**\n * \n * @type {number}\n * @memberof GetPoolPositionPnLResponse\n */\n page: number;\n /**\n * \n * @type {number}\n * @memberof GetPoolPositionPnLResponse\n */\n pageSize: number;\n /**\n * \n * @type {Array<PositionPnLData>}\n * @memberof GetPoolPositionPnLResponse\n */\n positions: Array<PositionPnLData>;\n /**\n * \n * @type {string}\n * @memberof GetPoolPositionPnLResponse\n */\n rewardTokenX?: string | null;\n /**\n * \n * @type {string}\n * @memberof GetPoolPositionPnLResponse\n */\n rewardTokenXPrice: string;\n /**\n * \n * @type {string}\n * @memberof GetPoolPositionPnLResponse\n */\n rewardTokenY?: string | null;\n /**\n * \n * @type {string}\n * @memberof GetPoolPositionPnLResponse\n */\n rewardTokenYPrice: string;\n /**\n * \n * @type {string}\n * @memberof GetPoolPositionPnLResponse\n */\n solPrice?: string | null;\n /**\n * \n * @type {string}\n * @memberof GetPoolPositionPnLResponse\n */\n tokenX?: string | null;\n /**\n * \n * @type {string}\n * @memberof GetPoolPositionPnLResponse\n */\n tokenXPrice: string;\n /**\n * \n * @type {string}\n * @memberof GetPoolPositionPnLResponse\n */\n tokenY?: string | null;\n /**\n * \n * @type {string}\n * @memberof GetPoolPositionPnLResponse\n */\n tokenYPrice: string;\n /**\n * \n * @type {number}\n * @memberof GetPoolPositionPnLResponse\n */\n totalCount: number;\n}\n\n/**\n * Check if a given object implements the GetPoolPositionPnLResponse interface.\n */\nexport function instanceOfGetPoolPositionPnLResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"hasNext\" in value;\n isInstance = isInstance && \"page\" in value;\n isInstance = isInstance && \"pageSize\" in value;\n isInstance = isInstance && \"positions\" in value;\n isInstance = isInstance && \"rewardTokenXPrice\" in value;\n isInstance = isInstance && \"rewardTokenYPrice\" in value;\n isInstance = isInstance && \"tokenXPrice\" in value;\n isInstance = isInstance && \"tokenYPrice\" in value;\n isInstance = isInstance && \"totalCount\" in value;\n\n return isInstance;\n}\n\nexport function GetPoolPositionPnLResponseFromJSON(json: any): GetPoolPositionPnLResponse {\n return GetPoolPositionPnLResponseFromJSONTyped(json, false);\n}\n\nexport function GetPoolPositionPnLResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetPoolPositionPnLResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'hasNext': json['hasNext'],\n 'page': json['page'],\n 'pageSize': json['pageSize'],\n 'positions': ((json['positions'] as Array<any>).map(PositionPnLDataFromJSON)),\n 'rewardTokenX': !exists(json, 'rewardTokenX') ? undefined : json['rewardTokenX'],\n 'rewardTokenXPrice': json['rewardTokenXPrice'],\n 'rewardTokenY': !exists(json, 'rewardTokenY') ? undefined : json['rewardTokenY'],\n 'rewardTokenYPrice': json['rewardTokenYPrice'],\n 'solPrice': !exists(json, 'solPrice') ? undefined : json['solPrice'],\n 'tokenX': !exists(json, 'tokenX') ? undefined : json['tokenX'],\n 'tokenXPrice': json['tokenXPrice'],\n 'tokenY': !exists(json, 'tokenY') ? undefined : json['tokenY'],\n 'tokenYPrice': json['tokenYPrice'],\n 'totalCount': json['totalCount'],\n };\n}\n\nexport function GetPoolPositionPnLResponseToJSON(value?: GetPoolPositionPnLResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'hasNext': value.hasNext,\n 'page': value.page,\n 'pageSize': value.pageSize,\n 'positions': ((value.positions as Array<any>).map(PositionPnLDataToJSON)),\n 'rewardTokenX': value.rewardTokenX,\n 'rewardTokenXPrice': value.rewardTokenXPrice,\n 'rewardTokenY': value.rewardTokenY,\n 'rewardTokenYPrice': value.rewardTokenYPrice,\n 'solPrice': value.solPrice,\n 'tokenX': value.tokenX,\n 'tokenXPrice': value.tokenXPrice,\n 'tokenY': value.tokenY,\n 'tokenYPrice': value.tokenYPrice,\n 'totalCount': value.totalCount,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface PoolConfig\n */\nexport interface PoolConfig {\n /**\n * Base fee rate\n * @type {number}\n * @memberof PoolConfig\n */\n baseFeePct: number;\n /**\n * Bin step of the pool\n * @type {number}\n * @memberof PoolConfig\n */\n binStep: number;\n /**\n * Fee collection mode\n * @type {number}\n * @memberof PoolConfig\n */\n collectFeeMode: number;\n /**\n * Maximum fee rate\n * @type {number}\n * @memberof PoolConfig\n */\n maxFeePct: number;\n /**\n * Protocol fee rate. A cut from trade fee.\n * @type {number}\n * @memberof PoolConfig\n */\n protocolFeePct: number;\n}\n\n/**\n * Check if a given object implements the PoolConfig interface.\n */\nexport function instanceOfPoolConfig(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"baseFeePct\" in value;\n isInstance = isInstance && \"binStep\" in value;\n isInstance = isInstance && \"collectFeeMode\" in value;\n isInstance = isInstance && \"maxFeePct\" in value;\n isInstance = isInstance && \"protocolFeePct\" in value;\n\n return isInstance;\n}\n\nexport function PoolConfigFromJSON(json: any): PoolConfig {\n return PoolConfigFromJSONTyped(json, false);\n}\n\nexport function PoolConfigFromJSONTyped(json: any, ignoreDiscriminator: boolean): PoolConfig {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'baseFeePct': json['base_fee_pct'],\n 'binStep': json['bin_step'],\n 'collectFeeMode': json['collect_fee_mode'],\n 'maxFeePct': json['max_fee_pct'],\n 'protocolFeePct': json['protocol_fee_pct'],\n };\n}\n\nexport function PoolConfigToJSON(value?: PoolConfig | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'base_fee_pct': value.baseFeePct,\n 'bin_step': value.binStep,\n 'collect_fee_mode': value.collectFeeMode,\n 'max_fee_pct': value.maxFeePct,\n 'protocol_fee_pct': value.protocolFeePct,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TimeWindowData\n */\nexport interface TimeWindowData {\n /**\n * \n * @type {number}\n * @memberof TimeWindowData\n */\n _12h: number;\n /**\n * \n * @type {number}\n * @memberof TimeWindowData\n */\n _1h: number;\n /**\n * \n * @type {number}\n * @memberof TimeWindowData\n */\n _24h: number;\n /**\n * \n * @type {number}\n * @memberof TimeWindowData\n */\n _2h: number;\n /**\n * \n * @type {number}\n * @memberof TimeWindowData\n */\n _30m: number;\n /**\n * \n * @type {number}\n * @memberof TimeWindowData\n */\n _4h: number;\n}\n\n/**\n * Check if a given object implements the TimeWindowData interface.\n */\nexport function instanceOfTimeWindowData(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"_12h\" in value;\n isInstance = isInstance && \"_1h\" in value;\n isInstance = isInstance && \"_24h\" in value;\n isInstance = isInstance && \"_2h\" in value;\n isInstance = isInstance && \"_30m\" in value;\n isInstance = isInstance && \"_4h\" in value;\n\n return isInstance;\n}\n\nexport function TimeWindowDataFromJSON(json: any): TimeWindowData {\n return TimeWindowDataFromJSONTyped(json, false);\n}\n\nexport function TimeWindowDataFromJSONTyped(json: any, ignoreDiscriminator: boolean): TimeWindowData {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n '_12h': json['12h'],\n '_1h': json['1h'],\n '_24h': json['24h'],\n '_2h': json['2h'],\n '_30m': json['30m'],\n '_4h': json['4h'],\n };\n}\n\nexport function TimeWindowDataToJSON(value?: TimeWindowData | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n '12h': value._12h,\n '1h': value._1h,\n '24h': value._24h,\n '2h': value._2h,\n '30m': value._30m,\n '4h': value._4h,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TokenMetrics\n */\nexport interface TokenMetrics {\n /**\n * \n * @type {string}\n * @memberof TokenMetrics\n */\n address: string;\n /**\n * \n * @type {number}\n * @memberof TokenMetrics\n */\n decimals: number;\n /**\n * \n * @type {boolean}\n * @memberof TokenMetrics\n */\n freezeAuthorityDisabled: boolean;\n /**\n * \n * @type {number}\n * @memberof TokenMetrics\n */\n holders: number;\n /**\n * \n * @type {boolean}\n * @memberof TokenMetrics\n */\n isVerified: boolean;\n /**\n * \n * @type {number}\n * @memberof TokenMetrics\n */\n marketCap: number;\n /**\n * \n * @type {string}\n * @memberof TokenMetrics\n */\n name: string;\n /**\n * \n * @type {number}\n * @memberof TokenMetrics\n */\n price: number;\n /**\n * \n * @type {string}\n * @memberof TokenMetrics\n */\n symbol: string;\n /**\n * \n * @type {number}\n * @memberof TokenMetrics\n */\n totalSupply: number;\n}\n\n/**\n * Check if a given object implements the TokenMetrics interface.\n */\nexport function instanceOfTokenMetrics(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"address\" in value;\n isInstance = isInstance && \"decimals\" in value;\n isInstance = isInstance && \"freezeAuthorityDisabled\" in value;\n isInstance = isInstance && \"holders\" in value;\n isInstance = isInstance && \"isVerified\" in value;\n isInstance = isInstance && \"marketCap\" in value;\n isInstance = isInstance && \"name\" in value;\n isInstance = isInstance && \"price\" in value;\n isInstance = isInstance && \"symbol\" in value;\n isInstance = isInstance && \"totalSupply\" in value;\n\n return isInstance;\n}\n\nexport function TokenMetricsFromJSON(json: any): TokenMetrics {\n return TokenMetricsFromJSONTyped(json, false);\n}\n\nexport function TokenMetricsFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenMetrics {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'address': json['address'],\n 'decimals': json['decimals'],\n 'freezeAuthorityDisabled': json['freeze_authority_disabled'],\n 'holders': json['holders'],\n 'isVerified': json['is_verified'],\n 'marketCap': json['market_cap'],\n 'name': json['name'],\n 'price': json['price'],\n 'symbol': json['symbol'],\n 'totalSupply': json['total_supply'],\n };\n}\n\nexport function TokenMetricsToJSON(value?: TokenMetrics | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'address': value.address,\n 'decimals': value.decimals,\n 'freeze_authority_disabled': value.freezeAuthorityDisabled,\n 'holders': value.holders,\n 'is_verified': value.isVerified,\n 'market_cap': value.marketCap,\n 'name': value.name,\n 'price': value.price,\n 'symbol': value.symbol,\n 'total_supply': value.totalSupply,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { CumulativeMetrics } from './CumulativeMetrics';\nimport {\n CumulativeMetricsFromJSON,\n CumulativeMetricsFromJSONTyped,\n CumulativeMetricsToJSON,\n} from './CumulativeMetrics';\nimport type { PoolConfig } from './PoolConfig';\nimport {\n PoolConfigFromJSON,\n PoolConfigFromJSONTyped,\n PoolConfigToJSON,\n} from './PoolConfig';\nimport type { TimeWindowData } from './TimeWindowData';\nimport {\n TimeWindowDataFromJSON,\n TimeWindowDataFromJSONTyped,\n TimeWindowDataToJSON,\n} from './TimeWindowData';\nimport type { TokenMetrics } from './TokenMetrics';\nimport {\n TokenMetricsFromJSON,\n TokenMetricsFromJSONTyped,\n TokenMetricsToJSON,\n} from './TokenMetrics';\n\n/**\n * \n * @export\n * @interface GetPools200ResponseDataInner\n */\nexport interface GetPools200ResponseDataInner {\n /**\n * Address of the liquidity pair\n * @type {string}\n * @memberof GetPools200ResponseDataInner\n */\n address: string;\n /**\n * 24 hour APR\n * @type {number}\n * @memberof GetPools200ResponseDataInner\n */\n apr: number;\n /**\n * 24 hour APY\n * @type {number}\n * @memberof GetPools200ResponseDataInner\n */\n apy: number;\n /**\n * Pool created at timestamp\n * @type {number}\n * @memberof GetPools200ResponseDataInner\n */\n createdAt: number;\n /**\n * \n * @type {CumulativeMetrics}\n * @memberof GetPools200ResponseDataInner\n */\n cumulativeMetrics: CumulativeMetrics;\n /**\n * Price of the liquidity pair\n * @type {number}\n * @memberof GetPools200ResponseDataInner\n */\n currentPrice: number;\n /**\n * Dynamic fee rate. Which is equal to base fee + variable fee.\n * @type {number}\n * @memberof GetPools200ResponseDataInner\n */\n dynamicFeePct: number;\n /**\n * Farm reward apr\n * @type {number}\n * @memberof GetPools200ResponseDataInner\n */\n farmApr: number;\n /**\n * Farm reward apy\n * @type {number}\n * @memberof GetPools200ResponseDataInner\n */\n farmApy: number;\n /**\n * \n * @type {TimeWindowData}\n * @memberof GetPools200ResponseDataInner\n */\n feeTvlRatio: TimeWindowData;\n /**\n * \n * @type {TimeWindowData}\n * @memberof GetPools200ResponseDataInner\n */\n fees: TimeWindowData;\n /**\n * Whether the pool has a farm or not\n * @type {boolean}\n * @memberof GetPools200ResponseDataInner\n */\n hasFarm: boolean;\n /**\n * Flag to indicate whether the pair is blacklisted\n * @type {boolean}\n * @memberof GetPools200ResponseDataInner\n */\n isBlacklisted: boolean;\n /**\n * Launchpad of the pair\n * @type {string}\n * @memberof GetPools200ResponseDataInner\n */\n launchpad?: string | null;\n /**\n * Name of the liquidity pair\n * @type {string}\n * @memberof GetPools200ResponseDataInner\n */\n name: string;\n /**\n * \n * @type {PoolConfig}\n * @memberof GetPools200ResponseDataInner\n */\n poolConfig: PoolConfig;\n /**\n * \n * @type {TimeWindowData}\n * @memberof GetPools200ResponseDataInner\n */\n protocolFees: TimeWindowData;\n /**\n * Address of token X reserve of the liquidity pair\n * @type {string}\n * @memberof GetPools200ResponseDataInner\n */\n reserveX: string;\n /**\n * Address of token Y reserve of the liquidity pair\n * @type {string}\n * @memberof GetPools200ResponseDataInner\n */\n reserveY: string;\n /**\n * Address of the farming reward X of the liquidity pair\n * @type {string}\n * @memberof GetPools200ResponseDataInner\n */\n rewardMintX: string;\n /**\n * Address of the farming reward Y of the liquidity pair\n * @type {string}\n * @memberof GetPools200ResponseDataInner\n */\n rewardMintY: string;\n /**\n * Tags of the pair\n * @type {Array<string>}\n * @memberof GetPools200ResponseDataInner\n */\n tags: Array<string>;\n /**\n * \n * @type {TokenMetrics}\n * @memberof GetPools200ResponseDataInner\n */\n tokenX: TokenMetrics;\n /**\n * Token X amount the liquidity pair hold\n * @type {number}\n * @memberof GetPools200ResponseDataInner\n */\n tokenXAmount: number;\n /**\n * \n * @type {TokenMetrics}\n * @memberof GetPools200ResponseDataInner\n */\n tokenY: TokenMetrics;\n /**\n * Token Y amount the liquidity pair hold\n * @type {number}\n * @memberof GetPools200ResponseDataInner\n */\n tokenYAmount: number;\n /**\n * Total liquidity the liquidity pair holding. Also known as Total Value Locked\n * @type {number}\n * @memberof GetPools200ResponseDataInner\n */\n tvl: number;\n /**\n * \n * @type {TimeWindowData}\n * @memberof GetPools200ResponseDataInner\n */\n volume: TimeWindowData;\n}\n\n/**\n * Check if a given object implements the GetPools200ResponseDataInner interface.\n */\nexport function instanceOfGetPools200ResponseDataInner(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"address\" in value;\n isInstance = isInstance && \"apr\" in value;\n isInstance = isInstance && \"apy\" in value;\n isInstance = isInstance && \"createdAt\" in value;\n isInstance = isInstance && \"cumulativeMetrics\" in value;\n isInstance = isInstance && \"currentPrice\" in value;\n isInstance = isInstance && \"dynamicFeePct\" in value;\n isInstance = isInstance && \"farmApr\" in value;\n isInstance = isInstance && \"farmApy\" in value;\n isInstance = isInstance && \"feeTvlRatio\" in value;\n isInstance = isInstance && \"fees\" in value;\n isInstance = isInstance && \"hasFarm\" in value;\n isInstance = isInstance && \"isBlacklisted\" in value;\n isInstance = isInstance && \"name\" in value;\n isInstance = isInstance && \"poolConfig\" in value;\n isInstance = isInstance && \"protocolFees\" in value;\n isInstance = isInstance && \"reserveX\" in value;\n isInstance = isInstance && \"reserveY\" in value;\n isInstance = isInstance && \"rewardMintX\" in value;\n isInstance = isInstance && \"rewardMintY\" in value;\n isInstance = isInstance && \"tags\" in value;\n isInstance = isInstance && \"tokenX\" in value;\n isInstance = isInstance && \"tokenXAmount\" in value;\n isInstance = isInstance && \"tokenY\" in value;\n isInstance = isInstance && \"tokenYAmount\" in value;\n isInstance = isInstance && \"tvl\" in value;\n isInstance = isInstance && \"volume\" in value;\n\n return isInstance;\n}\n\nexport function GetPools200ResponseDataInnerFromJSON(json: any): GetPools200ResponseDataInner {\n return GetPools200ResponseDataInnerFromJSONTyped(json, false);\n}\n\nexport function GetPools200ResponseDataInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetPools200ResponseDataInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'address': json['address'],\n 'apr': json['apr'],\n 'apy': json['apy'],\n 'createdAt': json['created_at'],\n 'cumulativeMetrics': CumulativeMetricsFromJSON(json['cumulative_metrics']),\n 'currentPrice': json['current_price'],\n 'dynamicFeePct': json['dynamic_fee_pct'],\n 'farmApr': json['farm_apr'],\n 'farmApy': json['farm_apy'],\n 'feeTvlRatio': TimeWindowDataFromJSON(json['fee_tvl_ratio']),\n 'fees': TimeWindowDataFromJSON(json['fees']),\n 'hasFarm': json['has_farm'],\n 'isBlacklisted': json['is_blacklisted'],\n 'launchpad': !exists(json, 'launchpad') ? undefined : json['launchpad'],\n 'name': json['name'],\n 'poolConfig': PoolConfigFromJSON(json['pool_config']),\n 'protocolFees': TimeWindowDataFromJSON(json['protocol_fees']),\n 'reserveX': json['reserve_x'],\n 'reserveY': json['reserve_y'],\n 'rewardMintX': json['reward_mint_x'],\n 'rewardMintY': json['reward_mint_y'],\n 'tags': json['tags'],\n 'tokenX': TokenMetricsFromJSON(json['token_x']),\n 'tokenXAmount': json['token_x_amount'],\n 'tokenY': TokenMetricsFromJSON(json['token_y']),\n 'tokenYAmount': json['token_y_amount'],\n 'tvl': json['tvl'],\n 'volume': TimeWindowDataFromJSON(json['volume']),\n };\n}\n\nexport function GetPools200ResponseDataInnerToJSON(value?: GetPools200ResponseDataInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'address': value.address,\n 'apr': value.apr,\n 'apy': value.apy,\n 'created_at': value.createdAt,\n 'cumulative_metrics': CumulativeMetricsToJSON(value.cumulativeMetrics),\n 'current_price': value.currentPrice,\n 'dynamic_fee_pct': value.dynamicFeePct,\n 'farm_apr': value.farmApr,\n 'farm_apy': value.farmApy,\n 'fee_tvl_ratio': TimeWindowDataToJSON(value.feeTvlRatio),\n 'fees': TimeWindowDataToJSON(value.fees),\n 'has_farm': value.hasFarm,\n 'is_blacklisted': value.isBlacklisted,\n 'launchpad': value.launchpad,\n 'name': value.name,\n 'pool_config': PoolConfigToJSON(value.poolConfig),\n 'protocol_fees': TimeWindowDataToJSON(value.protocolFees),\n 'reserve_x': value.reserveX,\n 'reserve_y': value.reserveY,\n 'reward_mint_x': value.rewardMintX,\n 'reward_mint_y': value.rewardMintY,\n 'tags': value.tags,\n 'token_x': TokenMetricsToJSON(value.tokenX),\n 'token_x_amount': value.tokenXAmount,\n 'token_y': TokenMetricsToJSON(value.tokenY),\n 'token_y_amount': value.tokenYAmount,\n 'tvl': value.tvl,\n 'volume': TimeWindowDataToJSON(value.volume),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { GetPools200ResponseDataInner } from './GetPools200ResponseDataInner';\nimport {\n GetPools200ResponseDataInnerFromJSON,\n GetPools200ResponseDataInnerFromJSONTyped,\n GetPools200ResponseDataInnerToJSON,\n} from './GetPools200ResponseDataInner';\n\n/**\n * \n * @export\n * @interface GetPools200Response\n */\nexport interface GetPools200Response {\n /**\n * \n * @type {number}\n * @memberof GetPools200Response\n */\n currentPage: number;\n /**\n * \n * @type {Array<GetPools200ResponseDataInner>}\n * @memberof GetPools200Response\n */\n data: Array<GetPools200ResponseDataInner>;\n /**\n * \n * @type {number}\n * @memberof GetPools200Response\n */\n pageSize: number;\n /**\n * \n * @type {number}\n * @memberof GetPools200Response\n */\n pages: number;\n /**\n * \n * @type {number}\n * @memberof GetPools200Response\n */\n total: number;\n}\n\n/**\n * Check if a given object implements the GetPools200Response interface.\n */\nexport function instanceOfGetPools200Response(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"currentPage\" in value;\n isInstance = isInstance && \"data\" in value;\n isInstance = isInstance && \"pageSize\" in value;\n isInstance = isInstance && \"pages\" in value;\n isInstance = isInstance && \"total\" in value;\n\n return isInstance;\n}\n\nexport function GetPools200ResponseFromJSON(json: any): GetPools200Response {\n return GetPools200ResponseFromJSONTyped(json, false);\n}\n\nexport function GetPools200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetPools200Response {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'currentPage': json['current_page'],\n 'data': ((json['data'] as Array<any>).map(GetPools200ResponseDataInnerFromJSON)),\n 'pageSize': json['page_size'],\n 'pages': json['pages'],\n 'total': json['total'],\n };\n}\n\nexport function GetPools200ResponseToJSON(value?: GetPools200Response | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'current_page': value.currentPage,\n 'data': ((value.data as Array<any>).map(GetPools200ResponseDataInnerToJSON)),\n 'page_size': value.pageSize,\n 'pages': value.pages,\n 'total': value.total,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface GetPoolsQuery\n */\nexport interface GetPoolsQuery {\n /**\n * Conditions to filter documents by field values\n * \n * Format: `<expr> [&& <expr> ...]`\n * \n * Where each expression is: `<field><op><value>`\n * \n * Allowed fields:\n * - Numeric: `tvl` `volume_*` `fee_*` `fee_tvl_ratio_*` `apr_*`\n * - Boolean: `is_blacklisted`\n * - Text: `pool_address` `name` `token_x` `token_y`\n * \n * Operators:\n * - Numeric: `=` `>` `>=` `<` `<=`\n * - Boolean: `=true` `=false`\n * - Text:\n * - exact match: `=<value>`\n * - multi-value OR: `=[value1|value2|...]`\n * \n * Notes:\n * - Multiple expressions are combined using logical **AND** (`&&`)\n * - Whitespace around operators is ignored\n * \n * Examples:\n * - `tvl>1000`\n * - `is_blacklisted=false && volume_24h>=50000`\n * @type {string}\n * @memberof GetPoolsQuery\n */\n filterBy?: string | null;\n /**\n * Page number (1-based)\n * @type {number}\n * @memberof GetPoolsQuery\n */\n page?: number | null;\n /**\n * Number of pools to return per page. Max 1000\n * @type {number}\n * @memberof GetPoolsQuery\n */\n pageSize?: number | null;\n /**\n * Search query used to match pools by name, tokens, or address\n * @type {string}\n * @memberof GetPoolsQuery\n */\n query?: string | null;\n /**\n * Sort results by one or more fields\n * \n * Format:\n * - Time-windowed metrics: `<metric>_<window>:<direction>`\n * - Non-windowed metrics: `<field>:<direction>`\n * \n * - `direction`: `asc` or `desc`\n * - `window` (when applicable): `5m` `30m` `1h` `2h` `4h` `12h` `24h`\n * \n * Available fields:\n * - Time-windowed metrics: `volume_*` `fee_*` `fee_tvl_ratio_*` `apr_*`\n * - Non-windowed metrics: `tvl` `fee_pct` `bin_step` `pool_created_at` `farm_apy`\n * \n * Default: `volume_24h:desc`\n * \n * Examples:\n * - `volume_24h:desc`\n * - `fee_1h:asc`\n * - `tvl:desc`\n * @type {string}\n * @memberof GetPoolsQuery\n */\n sortBy?: string | null;\n}\n\n/**\n * Check if a given object implements the GetPoolsQuery interface.\n */\nexport function instanceOfGetPoolsQuery(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function GetPoolsQueryFromJSON(json: any): GetPoolsQuery {\n return GetPoolsQueryFromJSONTyped(json, false);\n}\n\nexport function GetPoolsQueryFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetPoolsQuery {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'filterBy': !exists(json, 'filter_by') ? undefined : json['filter_by'],\n 'page': !exists(json, 'page') ? undefined : json['page'],\n 'pageSize': !exists(json, 'page_size') ? undefined : json['page_size'],\n 'query': !exists(json, 'query') ? undefined : json['query'],\n 'sortBy': !exists(json, 'sort_by') ? undefined : json['sort_by'],\n };\n}\n\nexport function GetPoolsQueryToJSON(value?: GetPoolsQuery | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'filter_by': value.filterBy,\n 'page': value.page,\n 'page_size': value.pageSize,\n 'query': value.query,\n 'sort_by': value.sortBy,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * Query parameters for getting user portfolio\n * @export\n * @interface GetPortfolioQuery\n */\nexport interface GetPortfolioQuery {\n /**\n * Only include pools with positions closed within this many days\n * Applied only for closed positions\n * (minimum: 1, maximum: 365, default: 120)\n * @type {number}\n * @memberof GetPortfolioQuery\n */\n daysBack?: number;\n /**\n * Page number for pagination (minimum: 1, default: 1)\n * @type {number}\n * @memberof GetPortfolioQuery\n */\n page?: number;\n /**\n * Page size for pagination (default: 20, maximum: 50)\n * @type {number}\n * @memberof GetPortfolioQuery\n */\n pageSize?: number;\n /**\n * User's wallet address\n * @type {string}\n * @memberof GetPortfolioQuery\n */\n user: string;\n}\n\n/**\n * Check if a given object implements the GetPortfolioQuery interface.\n */\nexport function instanceOfGetPortfolioQuery(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"user\" in value;\n\n return isInstance;\n}\n\nexport function GetPortfolioQueryFromJSON(json: any): GetPortfolioQuery {\n return GetPortfolioQueryFromJSONTyped(json, false);\n}\n\nexport function GetPortfolioQueryFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetPortfolioQuery {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'daysBack': !exists(json, 'days_back') ? undefined : json['days_back'],\n 'page': !exists(json, 'page') ? undefined : json['page'],\n 'pageSize': !exists(json, 'page_size') ? undefined : json['page_size'],\n 'user': json['user'],\n };\n}\n\nexport function GetPortfolioQueryToJSON(value?: GetPortfolioQuery | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'days_back': value.daysBack,\n 'page': value.page,\n 'page_size': value.pageSize,\n 'user': value.user,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * Aggregated portfolio data for a single pool\n * @export\n * @interface PoolPortfolioItem\n */\nexport interface PoolPortfolioItem {\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n baseFee: string;\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n binStep: string;\n /**\n * \n * @type {number}\n * @memberof PoolPortfolioItem\n */\n collectFeeMode: number;\n /**\n * \n * @type {number}\n * @memberof PoolPortfolioItem\n */\n lastClosedAt?: number | null;\n /**\n * PnL percent change (USD)\n * @type {string}\n * @memberof PoolPortfolioItem\n */\n pnlPctChange: string;\n /**\n * Total PnL in SOL (historical per-event SOL price)\n * @type {string}\n * @memberof PoolPortfolioItem\n */\n pnlSol: string;\n /**\n * PnL percent change (SOL)\n * @type {string}\n * @memberof PoolPortfolioItem\n */\n pnlSolPctChange: string;\n /**\n * Total PnL in USD, including realized and unrealized\n * @type {string}\n * @memberof PoolPortfolioItem\n */\n pnlUsd: string;\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n poolAddress: string;\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n tokenX: string;\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n tokenXIcon: string;\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n tokenXMint: string;\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n tokenY: string;\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n tokenYIcon: string;\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n tokenYMint: string;\n /**\n * Total deposit in USD\n * @type {string}\n * @memberof PoolPortfolioItem\n */\n totalDeposit: string;\n /**\n * Total deposit in SOL (historical per-event SOL price)\n * @type {string}\n * @memberof PoolPortfolioItem\n */\n totalDepositSol: string;\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n totalDepositTokenX: string;\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n totalDepositTokenXSol: string;\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n totalDepositTokenXUsd: string;\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n totalDepositTokenY: string;\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n totalDepositTokenYSol: string;\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n totalDepositTokenYUsd: string;\n /**\n * Total claim fee in USD\n * @type {string}\n * @memberof PoolPortfolioItem\n */\n totalFee: string;\n /**\n * Total claim fee in SOL (historical per-event SOL price)\n * @type {string}\n * @memberof PoolPortfolioItem\n */\n totalFeeSol: string;\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n totalFeeTokenX: string;\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n totalFeeTokenXSol: string;\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n totalFeeTokenXUsd: string;\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n totalFeeTokenY: string;\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n totalFeeTokenYSol: string;\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n totalFeeTokenYUsd: string;\n /**\n * Total withdrawal in USD\n * @type {string}\n * @memberof PoolPortfolioItem\n */\n totalWithdrawal: string;\n /**\n * Total withdrawal in SOL (historical per-event SOL price)\n * @type {string}\n * @memberof PoolPortfolioItem\n */\n totalWithdrawalSol: string;\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n totalWithdrawalTokenX: string;\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n totalWithdrawalTokenXSol: string;\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n totalWithdrawalTokenXUsd: string;\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n totalWithdrawalTokenY: string;\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n totalWithdrawalTokenYSol: string;\n /**\n * \n * @type {string}\n * @memberof PoolPortfolioItem\n */\n totalWithdrawalTokenYUsd: string;\n}\n\n/**\n * Check if a given object implements the PoolPortfolioItem interface.\n */\nexport function instanceOfPoolPortfolioItem(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"baseFee\" in value;\n isInstance = isInstance && \"binStep\" in value;\n isInstance = isInstance && \"collectFeeMode\" in value;\n isInstance = isInstance && \"pnlPctChange\" in value;\n isInstance = isInstance && \"pnlSol\" in value;\n isInstance = isInstance && \"pnlSolPctChange\" in value;\n isInstance = isInstance && \"pnlUsd\" in value;\n isInstance = isInstance && \"poolAddress\" in value;\n isInstance = isInstance && \"tokenX\" in value;\n isInstance = isInstance && \"tokenXIcon\" in value;\n isInstance = isInstance && \"tokenXMint\" in value;\n isInstance = isInstance && \"tokenY\" in value;\n isInstance = isInstance && \"tokenYIcon\" in value;\n isInstance = isInstance && \"tokenYMint\" in value;\n isInstance = isInstance && \"totalDeposit\" in value;\n isInstance = isInstance && \"totalDepositSol\" in value;\n isInstance = isInstance && \"totalDepositTokenX\" in value;\n isInstance = isInstance && \"totalDepositTokenXSol\" in value;\n isInstance = isInstance && \"totalDepositTokenXUsd\" in value;\n isInstance = isInstance && \"totalDepositTokenY\" in value;\n isInstance = isInstance && \"totalDepositTokenYSol\" in value;\n isInstance = isInstance && \"totalDepositTokenYUsd\" in value;\n isInstance = isInstance && \"totalFee\" in value;\n isInstance = isInstance && \"totalFeeSol\" in value;\n isInstance = isInstance && \"totalFeeTokenX\" in value;\n isInstance = isInstance && \"totalFeeTokenXSol\" in value;\n isInstance = isInstance && \"totalFeeTokenXUsd\" in value;\n isInstance = isInstance && \"totalFeeTokenY\" in value;\n isInstance = isInstance && \"totalFeeTokenYSol\" in value;\n isInstance = isInstance && \"totalFeeTokenYUsd\" in value;\n isInstance = isInstance && \"totalWithdrawal\" in value;\n isInstance = isInstance && \"totalWithdrawalSol\" in value;\n isInstance = isInstance && \"totalWithdrawalTokenX\" in value;\n isInstance = isInstance && \"totalWithdrawalTokenXSol\" in value;\n isInstance = isInstance && \"totalWithdrawalTokenXUsd\" in value;\n isInstance = isInstance && \"totalWithdrawalTokenY\" in value;\n isInstance = isInstance && \"totalWithdrawalTokenYSol\" in value;\n isInstance = isInstance && \"totalWithdrawalTokenYUsd\" in value;\n\n return isInstance;\n}\n\nexport function PoolPortfolioItemFromJSON(json: any): PoolPortfolioItem {\n return PoolPortfolioItemFromJSONTyped(json, false);\n}\n\nexport function PoolPortfolioItemFromJSONTyped(json: any, ignoreDiscriminator: boolean): PoolPortfolioItem {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'baseFee': json['baseFee'],\n 'binStep': json['binStep'],\n 'collectFeeMode': json['collectFeeMode'],\n 'lastClosedAt': !exists(json, 'lastClosedAt') ? undefined : json['lastClosedAt'],\n 'pnlPctChange': json['pnlPctChange'],\n 'pnlSol': json['pnlSol'],\n 'pnlSolPctChange': json['pnlSolPctChange'],\n 'pnlUsd': json['pnlUsd'],\n 'poolAddress': json['poolAddress'],\n 'tokenX': json['tokenX'],\n 'tokenXIcon': json['tokenXIcon'],\n 'tokenXMint': json['tokenXMint'],\n 'tokenY': json['tokenY'],\n 'tokenYIcon': json['tokenYIcon'],\n 'tokenYMint': json['tokenYMint'],\n 'totalDeposit': json['totalDeposit'],\n 'totalDepositSol': json['totalDepositSol'],\n 'totalDepositTokenX': json['totalDepositTokenX'],\n 'totalDepositTokenXSol': json['totalDepositTokenXSol'],\n 'totalDepositTokenXUsd': json['totalDepositTokenXUsd'],\n 'totalDepositTokenY': json['totalDepositTokenY'],\n 'totalDepositTokenYSol': json['totalDepositTokenYSol'],\n 'totalDepositTokenYUsd': json['totalDepositTokenYUsd'],\n 'totalFee': json['totalFee'],\n 'totalFeeSol': json['totalFeeSol'],\n 'totalFeeTokenX': json['totalFeeTokenX'],\n 'totalFeeTokenXSol': json['totalFeeTokenXSol'],\n 'totalFeeTokenXUsd': json['totalFeeTokenXUsd'],\n 'totalFeeTokenY': json['totalFeeTokenY'],\n 'totalFeeTokenYSol': json['totalFeeTokenYSol'],\n 'totalFeeTokenYUsd': json['totalFeeTokenYUsd'],\n 'totalWithdrawal': json['totalWithdrawal'],\n 'totalWithdrawalSol': json['totalWithdrawalSol'],\n 'totalWithdrawalTokenX': json['totalWithdrawalTokenX'],\n 'totalWithdrawalTokenXSol': json['totalWithdrawalTokenXSol'],\n 'totalWithdrawalTokenXUsd': json['totalWithdrawalTokenXUsd'],\n 'totalWithdrawalTokenY': json['totalWithdrawalTokenY'],\n 'totalWithdrawalTokenYSol': json['totalWithdrawalTokenYSol'],\n 'totalWithdrawalTokenYUsd': json['totalWithdrawalTokenYUsd'],\n };\n}\n\nexport function PoolPortfolioItemToJSON(value?: PoolPortfolioItem | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'baseFee': value.baseFee,\n 'binStep': value.binStep,\n 'collectFeeMode': value.collectFeeMode,\n 'lastClosedAt': value.lastClosedAt,\n 'pnlPctChange': value.pnlPctChange,\n 'pnlSol': value.pnlSol,\n 'pnlSolPctChange': value.pnlSolPctChange,\n 'pnlUsd': value.pnlUsd,\n 'poolAddress': value.poolAddress,\n 'tokenX': value.tokenX,\n 'tokenXIcon': value.tokenXIcon,\n 'tokenXMint': value.tokenXMint,\n 'tokenY': value.tokenY,\n 'tokenYIcon': value.tokenYIcon,\n 'tokenYMint': value.tokenYMint,\n 'totalDeposit': value.totalDeposit,\n 'totalDepositSol': value.totalDepositSol,\n 'totalDepositTokenX': value.totalDepositTokenX,\n 'totalDepositTokenXSol': value.totalDepositTokenXSol,\n 'totalDepositTokenXUsd': value.totalDepositTokenXUsd,\n 'totalDepositTokenY': value.totalDepositTokenY,\n 'totalDepositTokenYSol': value.totalDepositTokenYSol,\n 'totalDepositTokenYUsd': value.totalDepositTokenYUsd,\n 'totalFee': value.totalFee,\n 'totalFeeSol': value.totalFeeSol,\n 'totalFeeTokenX': value.totalFeeTokenX,\n 'totalFeeTokenXSol': value.totalFeeTokenXSol,\n 'totalFeeTokenXUsd': value.totalFeeTokenXUsd,\n 'totalFeeTokenY': value.totalFeeTokenY,\n 'totalFeeTokenYSol': value.totalFeeTokenYSol,\n 'totalFeeTokenYUsd': value.totalFeeTokenYUsd,\n 'totalWithdrawal': value.totalWithdrawal,\n 'totalWithdrawalSol': value.totalWithdrawalSol,\n 'totalWithdrawalTokenX': value.totalWithdrawalTokenX,\n 'totalWithdrawalTokenXSol': value.totalWithdrawalTokenXSol,\n 'totalWithdrawalTokenXUsd': value.totalWithdrawalTokenXUsd,\n 'totalWithdrawalTokenY': value.totalWithdrawalTokenY,\n 'totalWithdrawalTokenYSol': value.totalWithdrawalTokenYSol,\n 'totalWithdrawalTokenYUsd': value.totalWithdrawalTokenYUsd,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { PoolPortfolioItem } from './PoolPortfolioItem';\nimport {\n PoolPortfolioItemFromJSON,\n PoolPortfolioItemFromJSONTyped,\n PoolPortfolioItemToJSON,\n} from './PoolPortfolioItem';\n\n/**\n * User portfolio response with aggregated pool data\n * @export\n * @interface GetPortfolioResponse\n */\nexport interface GetPortfolioResponse {\n /**\n * \n * @type {boolean}\n * @memberof GetPortfolioResponse\n */\n hasNext: boolean;\n /**\n * \n * @type {number}\n * @memberof GetPortfolioResponse\n */\n page: number;\n /**\n * \n * @type {number}\n * @memberof GetPortfolioResponse\n */\n pageSize: number;\n /**\n * \n * @type {Array<PoolPortfolioItem>}\n * @memberof GetPortfolioResponse\n */\n pools: Array<PoolPortfolioItem>;\n /**\n * \n * @type {number}\n * @memberof GetPortfolioResponse\n */\n totalCount: number;\n /**\n * Total number of closed positions across all pools\n * @type {number}\n * @memberof GetPortfolioResponse\n */\n totalPositions: number;\n}\n\n/**\n * Check if a given object implements the GetPortfolioResponse interface.\n */\nexport function instanceOfGetPortfolioResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"hasNext\" in value;\n isInstance = isInstance && \"page\" in value;\n isInstance = isInstance && \"pageSize\" in value;\n isInstance = isInstance && \"pools\" in value;\n isInstance = isInstance && \"totalCount\" in value;\n isInstance = isInstance && \"totalPositions\" in value;\n\n return isInstance;\n}\n\nexport function GetPortfolioResponseFromJSON(json: any): GetPortfolioResponse {\n return GetPortfolioResponseFromJSONTyped(json, false);\n}\n\nexport function GetPortfolioResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetPortfolioResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'hasNext': json['hasNext'],\n 'page': json['page'],\n 'pageSize': json['pageSize'],\n 'pools': ((json['pools'] as Array<any>).map(PoolPortfolioItemFromJSON)),\n 'totalCount': json['totalCount'],\n 'totalPositions': json['totalPositions'],\n };\n}\n\nexport function GetPortfolioResponseToJSON(value?: GetPortfolioResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'hasNext': value.hasNext,\n 'page': value.page,\n 'pageSize': value.pageSize,\n 'pools': ((value.pools as Array<any>).map(PoolPortfolioItemToJSON)),\n 'totalCount': value.totalCount,\n 'totalPositions': value.totalPositions,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * Query parameters for getting portfolio totals\n * @export\n * @interface GetPortfolioTotalQuery\n */\nexport interface GetPortfolioTotalQuery {\n /**\n * User's wallet address\n * @type {string}\n * @memberof GetPortfolioTotalQuery\n */\n user: string;\n}\n\n/**\n * Check if a given object implements the GetPortfolioTotalQuery interface.\n */\nexport function instanceOfGetPortfolioTotalQuery(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"user\" in value;\n\n return isInstance;\n}\n\nexport function GetPortfolioTotalQueryFromJSON(json: any): GetPortfolioTotalQuery {\n return GetPortfolioTotalQueryFromJSONTyped(json, false);\n}\n\nexport function GetPortfolioTotalQueryFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetPortfolioTotalQuery {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'user': json['user'],\n };\n}\n\nexport function GetPortfolioTotalQueryToJSON(value?: GetPortfolioTotalQuery | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'user': value.user,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const PositionEventOrderDirection = {\n Asc: 'asc',\n Desc: 'desc'\n} as const;\nexport type PositionEventOrderDirection = typeof PositionEventOrderDirection[keyof typeof PositionEventOrderDirection];\n\n\nexport function PositionEventOrderDirectionFromJSON(json: any): PositionEventOrderDirection {\n return PositionEventOrderDirectionFromJSONTyped(json, false);\n}\n\nexport function PositionEventOrderDirectionFromJSONTyped(json: any, ignoreDiscriminator: boolean): PositionEventOrderDirection {\n return json as PositionEventOrderDirection;\n}\n\nexport function PositionEventOrderDirectionToJSON(value?: PositionEventOrderDirection | null): any {\n return value as any;\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const PositionEventType = {\n Add: 'add',\n Remove: 'remove',\n ClaimFee: 'claim_fee',\n ClaimReward: 'claim_reward'\n} as const;\nexport type PositionEventType = typeof PositionEventType[keyof typeof PositionEventType];\n\n\nexport function PositionEventTypeFromJSON(json: any): PositionEventType {\n return PositionEventTypeFromJSONTyped(json, false);\n}\n\nexport function PositionEventTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): PositionEventType {\n return json as PositionEventType;\n}\n\nexport function PositionEventTypeToJSON(value?: PositionEventType | null): any {\n return value as any;\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { PositionEventOrderDirection } from './PositionEventOrderDirection';\nimport {\n PositionEventOrderDirectionFromJSON,\n PositionEventOrderDirectionFromJSONTyped,\n PositionEventOrderDirectionToJSON,\n} from './PositionEventOrderDirection';\nimport type { PositionEventType } from './PositionEventType';\nimport {\n PositionEventTypeFromJSON,\n PositionEventTypeFromJSONTyped,\n PositionEventTypeToJSON,\n} from './PositionEventType';\n\n/**\n * Query parameters for getting historical events for a position\n * @export\n * @interface GetPositionHistoricalEventsQuery\n */\nexport interface GetPositionHistoricalEventsQuery {\n /**\n * \n * @type {PositionEventType}\n * @memberof GetPositionHistoricalEventsQuery\n */\n eventType?: PositionEventType | null;\n /**\n * \n * @type {PositionEventOrderDirection}\n * @memberof GetPositionHistoricalEventsQuery\n */\n orderDirection?: PositionEventOrderDirection | null;\n}\n\n/**\n * Check if a given object implements the GetPositionHistoricalEventsQuery interface.\n */\nexport function instanceOfGetPositionHistoricalEventsQuery(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function GetPositionHistoricalEventsQueryFromJSON(json: any): GetPositionHistoricalEventsQuery {\n return GetPositionHistoricalEventsQueryFromJSONTyped(json, false);\n}\n\nexport function GetPositionHistoricalEventsQueryFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetPositionHistoricalEventsQuery {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'eventType': !exists(json, 'event_type') ? undefined : PositionEventTypeFromJSON(json['event_type']),\n 'orderDirection': !exists(json, 'order_direction') ? undefined : PositionEventOrderDirectionFromJSON(json['order_direction']),\n };\n}\n\nexport function GetPositionHistoricalEventsQueryToJSON(value?: GetPositionHistoricalEventsQuery | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'event_type': PositionEventTypeToJSON(value.eventType),\n 'order_direction': PositionEventOrderDirectionToJSON(value.orderDirection),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface PositionEvent\n */\nexport interface PositionEvent {\n /**\n * \n * @type {string}\n * @memberof PositionEvent\n */\n amountX: string;\n /**\n * \n * @type {string}\n * @memberof PositionEvent\n */\n amountXUsd: string;\n /**\n * \n * @type {string}\n * @memberof PositionEvent\n */\n amountY: string;\n /**\n * \n * @type {string}\n * @memberof PositionEvent\n */\n amountYUsd: string;\n /**\n * \n * @type {number}\n * @memberof PositionEvent\n */\n blockTime: number;\n /**\n * \n * @type {Date}\n * @memberof PositionEvent\n */\n createdAt: Date;\n /**\n * \n * @type {string}\n * @memberof PositionEvent\n */\n eventType: string;\n /**\n * \n * @type {number}\n * @memberof PositionEvent\n */\n ixIndex: number;\n /**\n * \n * @type {string}\n * @memberof PositionEvent\n */\n poolAddress: string;\n /**\n * \n * @type {string}\n * @memberof PositionEvent\n */\n positionAddress: string;\n /**\n * \n * @type {string}\n * @memberof PositionEvent\n */\n signature: string;\n /**\n * \n * @type {number}\n * @memberof PositionEvent\n */\n slot: number;\n /**\n * \n * @type {string}\n * @memberof PositionEvent\n */\n tokenX: string;\n /**\n * \n * @type {string}\n * @memberof PositionEvent\n */\n tokenY: string;\n /**\n * \n * @type {string}\n * @memberof PositionEvent\n */\n totalUsd: string;\n /**\n * \n * @type {string}\n * @memberof PositionEvent\n */\n userAddress: string;\n}\n\n/**\n * Check if a given object implements the PositionEvent interface.\n */\nexport function instanceOfPositionEvent(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"amountX\" in value;\n isInstance = isInstance && \"amountXUsd\" in value;\n isInstance = isInstance && \"amountY\" in value;\n isInstance = isInstance && \"amountYUsd\" in value;\n isInstance = isInstance && \"blockTime\" in value;\n isInstance = isInstance && \"createdAt\" in value;\n isInstance = isInstance && \"eventType\" in value;\n isInstance = isInstance && \"ixIndex\" in value;\n isInstance = isInstance && \"poolAddress\" in value;\n isInstance = isInstance && \"positionAddress\" in value;\n isInstance = isInstance && \"signature\" in value;\n isInstance = isInstance && \"slot\" in value;\n isInstance = isInstance && \"tokenX\" in value;\n isInstance = isInstance && \"tokenY\" in value;\n isInstance = isInstance && \"totalUsd\" in value;\n isInstance = isInstance && \"userAddress\" in value;\n\n return isInstance;\n}\n\nexport function PositionEventFromJSON(json: any): PositionEvent {\n return PositionEventFromJSONTyped(json, false);\n}\n\nexport function PositionEventFromJSONTyped(json: any, ignoreDiscriminator: boolean): PositionEvent {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'amountX': json['amountX'],\n 'amountXUsd': json['amountXUsd'],\n 'amountY': json['amountY'],\n 'amountYUsd': json['amountYUsd'],\n 'blockTime': json['blockTime'],\n 'createdAt': (new Date(json['createdAt'])),\n 'eventType': json['eventType'],\n 'ixIndex': json['ixIndex'],\n 'poolAddress': json['poolAddress'],\n 'positionAddress': json['positionAddress'],\n 'signature': json['signature'],\n 'slot': json['slot'],\n 'tokenX': json['tokenX'],\n 'tokenY': json['tokenY'],\n 'totalUsd': json['totalUsd'],\n 'userAddress': json['userAddress'],\n };\n}\n\nexport function PositionEventToJSON(value?: PositionEvent | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'amountX': value.amountX,\n 'amountXUsd': value.amountXUsd,\n 'amountY': value.amountY,\n 'amountYUsd': value.amountYUsd,\n 'blockTime': value.blockTime,\n 'createdAt': (value.createdAt.toISOString()),\n 'eventType': value.eventType,\n 'ixIndex': value.ixIndex,\n 'poolAddress': value.poolAddress,\n 'positionAddress': value.positionAddress,\n 'signature': value.signature,\n 'slot': value.slot,\n 'tokenX': value.tokenX,\n 'tokenY': value.tokenY,\n 'totalUsd': value.totalUsd,\n 'userAddress': value.userAddress,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { PositionEvent } from './PositionEvent';\nimport {\n PositionEventFromJSON,\n PositionEventFromJSONTyped,\n PositionEventToJSON,\n} from './PositionEvent';\n\n/**\n * \n * @export\n * @interface GetPositionHistoricalEventsResponse\n */\nexport interface GetPositionHistoricalEventsResponse {\n /**\n * \n * @type {Array<PositionEvent>}\n * @memberof GetPositionHistoricalEventsResponse\n */\n events: Array<PositionEvent>;\n}\n\n/**\n * Check if a given object implements the GetPositionHistoricalEventsResponse interface.\n */\nexport function instanceOfGetPositionHistoricalEventsResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"events\" in value;\n\n return isInstance;\n}\n\nexport function GetPositionHistoricalEventsResponseFromJSON(json: any): GetPositionHistoricalEventsResponse {\n return GetPositionHistoricalEventsResponseFromJSONTyped(json, false);\n}\n\nexport function GetPositionHistoricalEventsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetPositionHistoricalEventsResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'events': ((json['events'] as Array<any>).map(PositionEventFromJSON)),\n };\n}\n\nexport function GetPositionHistoricalEventsResponseToJSON(value?: GetPositionHistoricalEventsResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'events': ((value.events as Array<any>).map(PositionEventToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface GetWalletPoolAccumulatedFeesParams\n */\nexport interface GetWalletPoolAccumulatedFeesParams {\n /**\n * Base58-encoded pool address\n * @type {string}\n * @memberof GetWalletPoolAccumulatedFeesParams\n */\n poolAddress: string;\n /**\n * Base58-encoded wallet address\n * @type {string}\n * @memberof GetWalletPoolAccumulatedFeesParams\n */\n wallet: string;\n}\n\n/**\n * Check if a given object implements the GetWalletPoolAccumulatedFeesParams interface.\n */\nexport function instanceOfGetWalletPoolAccumulatedFeesParams(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"poolAddress\" in value;\n isInstance = isInstance && \"wallet\" in value;\n\n return isInstance;\n}\n\nexport function GetWalletPoolAccumulatedFeesParamsFromJSON(json: any): GetWalletPoolAccumulatedFeesParams {\n return GetWalletPoolAccumulatedFeesParamsFromJSONTyped(json, false);\n}\n\nexport function GetWalletPoolAccumulatedFeesParamsFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetWalletPoolAccumulatedFeesParams {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'poolAddress': json['pool_address'],\n 'wallet': json['wallet'],\n };\n}\n\nexport function GetWalletPoolAccumulatedFeesParamsToJSON(value?: GetWalletPoolAccumulatedFeesParams | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'pool_address': value.poolAddress,\n 'wallet': value.wallet,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface GetWalletTotalClaimsResponse\n */\nexport interface GetWalletTotalClaimsResponse {\n /**\n * \n * @type {number}\n * @memberof GetWalletTotalClaimsResponse\n */\n feeClaimCount: number;\n /**\n * \n * @type {Date}\n * @memberof GetWalletTotalClaimsResponse\n */\n lastFeeClaimTime?: Date | null;\n /**\n * \n * @type {Date}\n * @memberof GetWalletTotalClaimsResponse\n */\n lastRewardClaimTime?: Date | null;\n /**\n * \n * @type {string}\n * @memberof GetWalletTotalClaimsResponse\n */\n poolAddress: string;\n /**\n * \n * @type {number}\n * @memberof GetWalletTotalClaimsResponse\n */\n rewardClaimCount: number;\n /**\n * \n * @type {string}\n * @memberof GetWalletTotalClaimsResponse\n */\n totalClaimsSol: string;\n /**\n * \n * @type {string}\n * @memberof GetWalletTotalClaimsResponse\n */\n totalClaimsUsd: string;\n /**\n * \n * @type {string}\n * @memberof GetWalletTotalClaimsResponse\n */\n totalFeeX: string;\n /**\n * \n * @type {string}\n * @memberof GetWalletTotalClaimsResponse\n */\n totalFeeXSol: string;\n /**\n * \n * @type {string}\n * @memberof GetWalletTotalClaimsResponse\n */\n totalFeeXUsd: string;\n /**\n * \n * @type {string}\n * @memberof GetWalletTotalClaimsResponse\n */\n totalFeeY: string;\n /**\n * \n * @type {string}\n * @memberof GetWalletTotalClaimsResponse\n */\n totalFeeYSol: string;\n /**\n * \n * @type {string}\n * @memberof GetWalletTotalClaimsResponse\n */\n totalFeeYUsd: string;\n /**\n * \n * @type {string}\n * @memberof GetWalletTotalClaimsResponse\n */\n totalRewardX: string;\n /**\n * \n * @type {string}\n * @memberof GetWalletTotalClaimsResponse\n */\n totalRewardXSol: string;\n /**\n * \n * @type {string}\n * @memberof GetWalletTotalClaimsResponse\n */\n totalRewardXUsd: string;\n /**\n * \n * @type {string}\n * @memberof GetWalletTotalClaimsResponse\n */\n totalRewardY: string;\n /**\n * \n * @type {string}\n * @memberof GetWalletTotalClaimsResponse\n */\n totalRewardYSol: string;\n /**\n * \n * @type {string}\n * @memberof GetWalletTotalClaimsResponse\n */\n totalRewardYUsd: string;\n /**\n * \n * @type {string}\n * @memberof GetWalletTotalClaimsResponse\n */\n userAddress: string;\n}\n\n/**\n * Check if a given object implements the GetWalletTotalClaimsResponse interface.\n */\nexport function instanceOfGetWalletTotalClaimsResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"feeClaimCount\" in value;\n isInstance = isInstance && \"poolAddress\" in value;\n isInstance = isInstance && \"rewardClaimCount\" in value;\n isInstance = isInstance && \"totalClaimsSol\" in value;\n isInstance = isInstance && \"totalClaimsUsd\" in value;\n isInstance = isInstance && \"totalFeeX\" in value;\n isInstance = isInstance && \"totalFeeXSol\" in value;\n isInstance = isInstance && \"totalFeeXUsd\" in value;\n isInstance = isInstance && \"totalFeeY\" in value;\n isInstance = isInstance && \"totalFeeYSol\" in value;\n isInstance = isInstance && \"totalFeeYUsd\" in value;\n isInstance = isInstance && \"totalRewardX\" in value;\n isInstance = isInstance && \"totalRewardXSol\" in value;\n isInstance = isInstance && \"totalRewardXUsd\" in value;\n isInstance = isInstance && \"totalRewardY\" in value;\n isInstance = isInstance && \"totalRewardYSol\" in value;\n isInstance = isInstance && \"totalRewardYUsd\" in value;\n isInstance = isInstance && \"userAddress\" in value;\n\n return isInstance;\n}\n\nexport function GetWalletTotalClaimsResponseFromJSON(json: any): GetWalletTotalClaimsResponse {\n return GetWalletTotalClaimsResponseFromJSONTyped(json, false);\n}\n\nexport function GetWalletTotalClaimsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetWalletTotalClaimsResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'feeClaimCount': json['fee_claim_count'],\n 'lastFeeClaimTime': !exists(json, 'last_fee_claim_time') ? undefined : (json['last_fee_claim_time'] === null ? null : new Date(json['last_fee_claim_time'])),\n 'lastRewardClaimTime': !exists(json, 'last_reward_claim_time') ? undefined : (json['last_reward_claim_time'] === null ? null : new Date(json['last_reward_claim_time'])),\n 'poolAddress': json['pool_address'],\n 'rewardClaimCount': json['reward_claim_count'],\n 'totalClaimsSol': json['total_claims_sol'],\n 'totalClaimsUsd': json['total_claims_usd'],\n 'totalFeeX': json['total_fee_x'],\n 'totalFeeXSol': json['total_fee_x_sol'],\n 'totalFeeXUsd': json['total_fee_x_usd'],\n 'totalFeeY': json['total_fee_y'],\n 'totalFeeYSol': json['total_fee_y_sol'],\n 'totalFeeYUsd': json['total_fee_y_usd'],\n 'totalRewardX': json['total_reward_x'],\n 'totalRewardXSol': json['total_reward_x_sol'],\n 'totalRewardXUsd': json['total_reward_x_usd'],\n 'totalRewardY': json['total_reward_y'],\n 'totalRewardYSol': json['total_reward_y_sol'],\n 'totalRewardYUsd': json['total_reward_y_usd'],\n 'userAddress': json['user_address'],\n };\n}\n\nexport function GetWalletTotalClaimsResponseToJSON(value?: GetWalletTotalClaimsResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'fee_claim_count': value.feeClaimCount,\n 'last_fee_claim_time': value.lastFeeClaimTime === undefined ? undefined : (value.lastFeeClaimTime === null ? null : value.lastFeeClaimTime.toISOString()),\n 'last_reward_claim_time': value.lastRewardClaimTime === undefined ? undefined : (value.lastRewardClaimTime === null ? null : value.lastRewardClaimTime.toISOString()),\n 'pool_address': value.poolAddress,\n 'reward_claim_count': value.rewardClaimCount,\n 'total_claims_sol': value.totalClaimsSol,\n 'total_claims_usd': value.totalClaimsUsd,\n 'total_fee_x': value.totalFeeX,\n 'total_fee_x_sol': value.totalFeeXSol,\n 'total_fee_x_usd': value.totalFeeXUsd,\n 'total_fee_y': value.totalFeeY,\n 'total_fee_y_sol': value.totalFeeYSol,\n 'total_fee_y_usd': value.totalFeeYUsd,\n 'total_reward_x': value.totalRewardX,\n 'total_reward_x_sol': value.totalRewardXSol,\n 'total_reward_x_usd': value.totalRewardXUsd,\n 'total_reward_y': value.totalRewardY,\n 'total_reward_y_sol': value.totalRewardYSol,\n 'total_reward_y_usd': value.totalRewardYUsd,\n 'user_address': value.userAddress,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface GroupResponse\n */\nexport interface GroupResponse {\n /**\n * \n * @type {string}\n * @memberof GroupResponse\n */\n groupName: string;\n /**\n * \n * @type {boolean}\n * @memberof GroupResponse\n */\n hasFarm: boolean;\n /**\n * \n * @type {string}\n * @memberof GroupResponse\n */\n lexicalOrderMints: string;\n /**\n * \n * @type {number}\n * @memberof GroupResponse\n */\n maxFeeTvlRatio: number;\n /**\n * \n * @type {number}\n * @memberof GroupResponse\n */\n poolCount: number;\n /**\n * \n * @type {string}\n * @memberof GroupResponse\n */\n tokenX: string;\n /**\n * \n * @type {string}\n * @memberof GroupResponse\n */\n tokenY: string;\n /**\n * \n * @type {number}\n * @memberof GroupResponse\n */\n totalTvl: number;\n /**\n * \n * @type {number}\n * @memberof GroupResponse\n */\n totalVolume: number;\n}\n\n/**\n * Check if a given object implements the GroupResponse interface.\n */\nexport function instanceOfGroupResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"groupName\" in value;\n isInstance = isInstance && \"hasFarm\" in value;\n isInstance = isInstance && \"lexicalOrderMints\" in value;\n isInstance = isInstance && \"maxFeeTvlRatio\" in value;\n isInstance = isInstance && \"poolCount\" in value;\n isInstance = isInstance && \"tokenX\" in value;\n isInstance = isInstance && \"tokenY\" in value;\n isInstance = isInstance && \"totalTvl\" in value;\n isInstance = isInstance && \"totalVolume\" in value;\n\n return isInstance;\n}\n\nexport function GroupResponseFromJSON(json: any): GroupResponse {\n return GroupResponseFromJSONTyped(json, false);\n}\n\nexport function GroupResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): GroupResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'groupName': json['group_name'],\n 'hasFarm': json['has_farm'],\n 'lexicalOrderMints': json['lexical_order_mints'],\n 'maxFeeTvlRatio': json['max_fee_tvl_ratio'],\n 'poolCount': json['pool_count'],\n 'tokenX': json['token_x'],\n 'tokenY': json['token_y'],\n 'totalTvl': json['total_tvl'],\n 'totalVolume': json['total_volume'],\n };\n}\n\nexport function GroupResponseToJSON(value?: GroupResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'group_name': value.groupName,\n 'has_farm': value.hasFarm,\n 'lexical_order_mints': value.lexicalOrderMints,\n 'max_fee_tvl_ratio': value.maxFeeTvlRatio,\n 'pool_count': value.poolCount,\n 'token_x': value.tokenX,\n 'token_y': value.tokenY,\n 'total_tvl': value.totalTvl,\n 'total_volume': value.totalVolume,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const LimitOrderBinFillStatus = {\n NotFilled: 'not_filled',\n PartialFilled: 'partial_filled',\n Fulfilled: 'fulfilled'\n} as const;\nexport type LimitOrderBinFillStatus = typeof LimitOrderBinFillStatus[keyof typeof LimitOrderBinFillStatus];\n\n\nexport function LimitOrderBinFillStatusFromJSON(json: any): LimitOrderBinFillStatus {\n return LimitOrderBinFillStatusFromJSONTyped(json, false);\n}\n\nexport function LimitOrderBinFillStatusFromJSONTyped(json: any, ignoreDiscriminator: boolean): LimitOrderBinFillStatus {\n return json as LimitOrderBinFillStatus;\n}\n\nexport function LimitOrderBinFillStatusToJSON(value?: LimitOrderBinFillStatus | null): any {\n return value as any;\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * Summary totals for a user's limit orders across every pool. `_sol` variants\n * follow two different time bases:\n * - `total_deposit_sol` — SOL value at *placement time* (SOL price frozen when\n * the PlaceLimitOrderEvt was indexed).\n * - `total_bonus_sol` — SOL value at *current spot* (current SOL price applied\n * to the running bonus accrual).\n * \n * \"Open\" means placed with no row in `close_limit_orders`. \"Closed\" means an\n * `close_limit_orders` row exists. Cancel events are not terminal — a\n * cancelled-but-not-closed order is still open.\n * @export\n * @interface LimitOrderSummaryResponse\n */\nexport interface LimitOrderSummaryResponse {\n /**\n * Number of limit orders that have been closed on-chain.\n * @type {number}\n * @memberof LimitOrderSummaryResponse\n */\n closedOrders: number;\n /**\n * Number of limit orders that are still open (no close event).\n * @type {number}\n * @memberof LimitOrderSummaryResponse\n */\n openOrders: number;\n /**\n * Total SOL value of bonus accrued across open orders (current spot SOL price).\n * @type {string}\n * @memberof LimitOrderSummaryResponse\n */\n totalBonusSol: string;\n /**\n * Total USD value of bonus (pro-rata fee share) accrued across open orders.\n * @type {string}\n * @memberof LimitOrderSummaryResponse\n */\n totalBonusUsd: string;\n /**\n * Total SOL value of currently-open order deposits (placement-time SOL price).\n * @type {string}\n * @memberof LimitOrderSummaryResponse\n */\n totalDepositSol: string;\n /**\n * Total USD value of currently-open order deposits.\n * @type {string}\n * @memberof LimitOrderSummaryResponse\n */\n totalDepositUsd: string;\n}\n\n/**\n * Check if a given object implements the LimitOrderSummaryResponse interface.\n */\nexport function instanceOfLimitOrderSummaryResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"closedOrders\" in value;\n isInstance = isInstance && \"openOrders\" in value;\n isInstance = isInstance && \"totalBonusSol\" in value;\n isInstance = isInstance && \"totalBonusUsd\" in value;\n isInstance = isInstance && \"totalDepositSol\" in value;\n isInstance = isInstance && \"totalDepositUsd\" in value;\n\n return isInstance;\n}\n\nexport function LimitOrderSummaryResponseFromJSON(json: any): LimitOrderSummaryResponse {\n return LimitOrderSummaryResponseFromJSONTyped(json, false);\n}\n\nexport function LimitOrderSummaryResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): LimitOrderSummaryResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'closedOrders': json['closed_orders'],\n 'openOrders': json['open_orders'],\n 'totalBonusSol': json['total_bonus_sol'],\n 'totalBonusUsd': json['total_bonus_usd'],\n 'totalDepositSol': json['total_deposit_sol'],\n 'totalDepositUsd': json['total_deposit_usd'],\n };\n}\n\nexport function LimitOrderSummaryResponseToJSON(value?: LimitOrderSummaryResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'closed_orders': value.closedOrders,\n 'open_orders': value.openOrders,\n 'total_bonus_sol': value.totalBonusSol,\n 'total_bonus_usd': value.totalBonusUsd,\n 'total_deposit_sol': value.totalDepositSol,\n 'total_deposit_usd': value.totalDepositUsd,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * Query parameters for paginated limit order endpoints.\n * @export\n * @interface LimitOrdersPaginationQuery\n */\nexport interface LimitOrdersPaginationQuery {\n /**\n * Page number, 1-indexed. Default: 1\n * @type {number}\n * @memberof LimitOrdersPaginationQuery\n */\n page?: number | null;\n /**\n * Number of results per page. Default: 20, max: 1000\n * @type {number}\n * @memberof LimitOrdersPaginationQuery\n */\n pageSize?: number | null;\n}\n\n/**\n * Check if a given object implements the LimitOrdersPaginationQuery interface.\n */\nexport function instanceOfLimitOrdersPaginationQuery(value: object): boolean {\n let isInstance = true;\n\n return isInstance;\n}\n\nexport function LimitOrdersPaginationQueryFromJSON(json: any): LimitOrdersPaginationQuery {\n return LimitOrdersPaginationQueryFromJSONTyped(json, false);\n}\n\nexport function LimitOrdersPaginationQueryFromJSONTyped(json: any, ignoreDiscriminator: boolean): LimitOrdersPaginationQuery {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'page': !exists(json, 'page') ? undefined : json['page'],\n 'pageSize': !exists(json, 'page_size') ? undefined : json['page_size'],\n };\n}\n\nexport function LimitOrdersPaginationQueryToJSON(value?: LimitOrdersPaginationQuery | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'page': value.page,\n 'page_size': value.pageSize,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * Path parameter for wallet-only `/wallets/{wallet}/limit_orders/*` endpoints.\n * @export\n * @interface LimitOrdersWalletPath\n */\nexport interface LimitOrdersWalletPath {\n /**\n * Base58-encoded wallet address\n * @type {string}\n * @memberof LimitOrdersWalletPath\n */\n wallet: string;\n}\n\n/**\n * Check if a given object implements the LimitOrdersWalletPath interface.\n */\nexport function instanceOfLimitOrdersWalletPath(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"wallet\" in value;\n\n return isInstance;\n}\n\nexport function LimitOrdersWalletPathFromJSON(json: any): LimitOrdersWalletPath {\n return LimitOrdersWalletPathFromJSONTyped(json, false);\n}\n\nexport function LimitOrdersWalletPathFromJSONTyped(json: any, ignoreDiscriminator: boolean): LimitOrdersWalletPath {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'wallet': json['wallet'],\n };\n}\n\nexport function LimitOrdersWalletPathToJSON(value?: LimitOrdersWalletPath | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'wallet': value.wallet,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * Path parameters for pool-scoped endpoints\n * `/wallets/{wallet}/limit_orders/{open|closed}/{pool_address}`.\n * @export\n * @interface LimitOrdersWalletPoolPath\n */\nexport interface LimitOrdersWalletPoolPath {\n /**\n * Base58-encoded LB pair (pool) address\n * @type {string}\n * @memberof LimitOrdersWalletPoolPath\n */\n poolAddress: string;\n /**\n * Base58-encoded wallet address\n * @type {string}\n * @memberof LimitOrdersWalletPoolPath\n */\n wallet: string;\n}\n\n/**\n * Check if a given object implements the LimitOrdersWalletPoolPath interface.\n */\nexport function instanceOfLimitOrdersWalletPoolPath(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"poolAddress\" in value;\n isInstance = isInstance && \"wallet\" in value;\n\n return isInstance;\n}\n\nexport function LimitOrdersWalletPoolPathFromJSON(json: any): LimitOrdersWalletPoolPath {\n return LimitOrdersWalletPoolPathFromJSONTyped(json, false);\n}\n\nexport function LimitOrdersWalletPoolPathFromJSONTyped(json: any, ignoreDiscriminator: boolean): LimitOrdersWalletPoolPath {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'poolAddress': json['pool_address'],\n 'wallet': json['wallet'],\n };\n}\n\nexport function LimitOrdersWalletPoolPathToJSON(value?: LimitOrdersWalletPoolPath | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'pool_address': value.poolAddress,\n 'wallet': value.wallet,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface OHLCVResponse\n */\nexport interface OHLCVResponse {\n /**\n * \n * @type {number}\n * @memberof OHLCVResponse\n */\n close: number;\n /**\n * \n * @type {number}\n * @memberof OHLCVResponse\n */\n high: number;\n /**\n * \n * @type {number}\n * @memberof OHLCVResponse\n */\n low: number;\n /**\n * \n * @type {number}\n * @memberof OHLCVResponse\n */\n open: number;\n /**\n * \n * @type {number}\n * @memberof OHLCVResponse\n */\n timestamp: number;\n /**\n * \n * @type {string}\n * @memberof OHLCVResponse\n */\n timestampStr: string;\n /**\n * \n * @type {number}\n * @memberof OHLCVResponse\n */\n volume: number;\n}\n\n/**\n * Check if a given object implements the OHLCVResponse interface.\n */\nexport function instanceOfOHLCVResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"close\" in value;\n isInstance = isInstance && \"high\" in value;\n isInstance = isInstance && \"low\" in value;\n isInstance = isInstance && \"open\" in value;\n isInstance = isInstance && \"timestamp\" in value;\n isInstance = isInstance && \"timestampStr\" in value;\n isInstance = isInstance && \"volume\" in value;\n\n return isInstance;\n}\n\nexport function OHLCVResponseFromJSON(json: any): OHLCVResponse {\n return OHLCVResponseFromJSONTyped(json, false);\n}\n\nexport function OHLCVResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): OHLCVResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'close': json['close'],\n 'high': json['high'],\n 'low': json['low'],\n 'open': json['open'],\n 'timestamp': json['timestamp'],\n 'timestampStr': json['timestamp_str'],\n 'volume': json['volume'],\n };\n}\n\nexport function OHLCVResponseToJSON(value?: OHLCVResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'close': value.close,\n 'high': value.high,\n 'low': value.low,\n 'open': value.open,\n 'timestamp': value.timestamp,\n 'timestamp_str': value.timestampStr,\n 'volume': value.volume,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { LimitOrderBinFillStatus } from './LimitOrderBinFillStatus';\nimport {\n LimitOrderBinFillStatusFromJSON,\n LimitOrderBinFillStatusFromJSONTyped,\n LimitOrderBinFillStatusToJSON,\n} from './LimitOrderBinFillStatus';\n\n/**\n * Per-bin point in an open limit order's distribution. Amounts are in the\n * input (deposit) token's display units — token X for an ask, token Y for a\n * bid — matching the order-level `filled_input_amount`.\n * @export\n * @interface OpenLimitOrderBinPoint\n */\nexport interface OpenLimitOrderBinPoint {\n /**\n * \n * @type {number}\n * @memberof OpenLimitOrderBinPoint\n */\n binId: number;\n /**\n * Original deposit at this bin in input-token display units. The\n * frontend's bar-chart heights are derived from `deposit_amount × price`\n * (i.e. the notional in output-token terms) — no per-bin USD field is\n * exposed since order-level totals carry the dollar/SOL values.\n * @type {string}\n * @memberof OpenLimitOrderBinPoint\n */\n depositAmount: string;\n /**\n * \n * @type {LimitOrderBinFillStatus}\n * @memberof OpenLimitOrderBinPoint\n */\n fillStatus: LimitOrderBinFillStatus;\n /**\n * Filled portion in input-token display units.\n * @type {string}\n * @memberof OpenLimitOrderBinPoint\n */\n fulfilledAmount: string;\n /**\n * Output-token amount received from this bin's fills, in output-token\n * display units. Ask: `fulfilled_amount × price`. Bid: `fulfilled_amount /\n * price`.\n * @type {string}\n * @memberof OpenLimitOrderBinPoint\n */\n outputReceivedAmount: string;\n /**\n * Price at this bin (token Y per token X).\n * @type {string}\n * @memberof OpenLimitOrderBinPoint\n */\n price: string;\n /**\n * Remaining unfilled portion in input-token display units.\n * @type {string}\n * @memberof OpenLimitOrderBinPoint\n */\n unfilledAmount: string;\n}\n\n/**\n * Check if a given object implements the OpenLimitOrderBinPoint interface.\n */\nexport function instanceOfOpenLimitOrderBinPoint(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"binId\" in value;\n isInstance = isInstance && \"depositAmount\" in value;\n isInstance = isInstance && \"fillStatus\" in value;\n isInstance = isInstance && \"fulfilledAmount\" in value;\n isInstance = isInstance && \"outputReceivedAmount\" in value;\n isInstance = isInstance && \"price\" in value;\n isInstance = isInstance && \"unfilledAmount\" in value;\n\n return isInstance;\n}\n\nexport function OpenLimitOrderBinPointFromJSON(json: any): OpenLimitOrderBinPoint {\n return OpenLimitOrderBinPointFromJSONTyped(json, false);\n}\n\nexport function OpenLimitOrderBinPointFromJSONTyped(json: any, ignoreDiscriminator: boolean): OpenLimitOrderBinPoint {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'binId': json['bin_id'],\n 'depositAmount': json['deposit_amount'],\n 'fillStatus': LimitOrderBinFillStatusFromJSON(json['fill_status']),\n 'fulfilledAmount': json['fulfilled_amount'],\n 'outputReceivedAmount': json['output_received_amount'],\n 'price': json['price'],\n 'unfilledAmount': json['unfilled_amount'],\n };\n}\n\nexport function OpenLimitOrderBinPointToJSON(value?: OpenLimitOrderBinPoint | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'bin_id': value.binId,\n 'deposit_amount': value.depositAmount,\n 'fill_status': LimitOrderBinFillStatusToJSON(value.fillStatus),\n 'fulfilled_amount': value.fulfilledAmount,\n 'output_received_amount': value.outputReceivedAmount,\n 'price': value.price,\n 'unfilled_amount': value.unfilledAmount,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { OpenLimitOrderBinPoint } from './OpenLimitOrderBinPoint';\nimport {\n OpenLimitOrderBinPointFromJSON,\n OpenLimitOrderBinPointFromJSONTyped,\n OpenLimitOrderBinPointToJSON,\n} from './OpenLimitOrderBinPoint';\n\n/**\n * Per-order detail for a live limit order inside a specific pool. Amounts use\n * the `input`/`output` terminology (input is the deposited token, output is\n * the expected fill token) to abstract ask/bid semantics for the frontend.\n * Pool-level metadata (pair, bin step, fees, tokens, current pool state) lives\n * once at the top of the response — see `OpenLimitOrdersForPoolResponse`.\n * @export\n * @interface OpenLimitOrderDetail\n */\nexport interface OpenLimitOrderDetail {\n /**\n * Per-bin distribution sorted by `bin_id` ASC.\n * @type {Array<OpenLimitOrderBinPoint>}\n * @memberof OpenLimitOrderDetail\n */\n binDistribution: Array<OpenLimitOrderBinPoint>;\n /**\n * Filled amount expressed in input (deposit) token units.\n * @type {string}\n * @memberof OpenLimitOrderDetail\n */\n filledInputAmount: string;\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderDetail\n */\n filledPct: string;\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderDetail\n */\n inputAmount: string;\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderDetail\n */\n inputAmountSol: string;\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderDetail\n */\n inputAmountUsd: string;\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderDetail\n */\n inputToken: string;\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderDetail\n */\n inputTokenMint: string;\n /**\n * true = ask (selling X for Y), false = bid (buying X with Y).\n * @type {boolean}\n * @memberof OpenLimitOrderDetail\n */\n isAskSide: boolean;\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderDetail\n */\n limitOrderAddress: string;\n /**\n * \n * @type {number}\n * @memberof OpenLimitOrderDetail\n */\n lowerPoolPrice: number;\n /**\n * Bin id of the nearest still-unfilled (or partially-filled) bin to the\n * current active bin. `None` only when every bin in the order is\n * fulfilled. Tie-broken to the lower `bin_id`.\n * @type {number}\n * @memberof OpenLimitOrderDetail\n */\n nearestUnfilledBinId?: number | null;\n /**\n * Price of `nearest_unfilled_bin_id` (same units as `current_pool_price`\n * on the enclosing response wrapper). `None` only when fully filled.\n * Frontend computes the percentage distance as\n * `(nearest_unfilled_bin_price - current_pool_price) / current_pool_price`.\n * @type {string}\n * @memberof OpenLimitOrderDetail\n */\n nearestUnfilledBinPrice?: string | null;\n /**\n * Unix seconds.\n * @type {number}\n * @memberof OpenLimitOrderDetail\n */\n openedAt: number;\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderDetail\n */\n openedAtSignature: string;\n /**\n * \n * @type {number}\n * @memberof OpenLimitOrderDetail\n */\n openedAtSlot: number;\n /**\n * Expected output at placement bin prices — `amount_y` for asks,\n * `amount_x` for bids. Pre-computed on the\n * `limit_orders_aggregate.output_amount_expected` column by the open\n * MV via `if(is_ask_side, amount_y, amount_x)`, so this field is just\n * the stored value (no per-bin math at request time).\n * @type {string}\n * @memberof OpenLimitOrderDetail\n */\n outputAmountExpected: string;\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderDetail\n */\n outputToken: string;\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderDetail\n */\n outputTokenMint: string;\n /**\n * SOL value of bonus (current spot SOL price).\n * @type {string}\n * @memberof OpenLimitOrderDetail\n */\n totalBonusSol: string;\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderDetail\n */\n totalBonusUsd: string;\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderDetail\n */\n totalBonusX: string;\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderDetail\n */\n totalBonusY: string;\n /**\n * Total filled amount in *output* token display units — what the user has\n * received. Computed as `Σ fulfilled_at_bin × bin_price` for asks, or\n * `Σ fulfilled / bin_price` for bids. Each bin's price is fixed by the\n * program at fill time, so this is the close estimate of the on-chain\n * output (a true figure is only emitted at cancel).\n * @type {string}\n * @memberof OpenLimitOrderDetail\n */\n totalFilledAmount: string;\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderDetail\n */\n totalFilledAmountSol: string;\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderDetail\n */\n totalFilledAmountUsd: string;\n /**\n * Total unfilled deposit in input-token display units\n * (`input_amount - filled_input_amount`).\n * @type {string}\n * @memberof OpenLimitOrderDetail\n */\n totalUnfilledAmount: string;\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderDetail\n */\n totalUnfilledAmountSol: string;\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderDetail\n */\n totalUnfilledAmountUsd: string;\n /**\n * \n * @type {number}\n * @memberof OpenLimitOrderDetail\n */\n upperPoolPrice: number;\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderDetail\n */\n userAddress: string;\n}\n\n/**\n * Check if a given object implements the OpenLimitOrderDetail interface.\n */\nexport function instanceOfOpenLimitOrderDetail(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"binDistribution\" in value;\n isInstance = isInstance && \"filledInputAmount\" in value;\n isInstance = isInstance && \"filledPct\" in value;\n isInstance = isInstance && \"inputAmount\" in value;\n isInstance = isInstance && \"inputAmountSol\" in value;\n isInstance = isInstance && \"inputAmountUsd\" in value;\n isInstance = isInstance && \"inputToken\" in value;\n isInstance = isInstance && \"inputTokenMint\" in value;\n isInstance = isInstance && \"isAskSide\" in value;\n isInstance = isInstance && \"limitOrderAddress\" in value;\n isInstance = isInstance && \"lowerPoolPrice\" in value;\n isInstance = isInstance && \"openedAt\" in value;\n isInstance = isInstance && \"openedAtSignature\" in value;\n isInstance = isInstance && \"openedAtSlot\" in value;\n isInstance = isInstance && \"outputAmountExpected\" in value;\n isInstance = isInstance && \"outputToken\" in value;\n isInstance = isInstance && \"outputTokenMint\" in value;\n isInstance = isInstance && \"totalBonusSol\" in value;\n isInstance = isInstance && \"totalBonusUsd\" in value;\n isInstance = isInstance && \"totalBonusX\" in value;\n isInstance = isInstance && \"totalBonusY\" in value;\n isInstance = isInstance && \"totalFilledAmount\" in value;\n isInstance = isInstance && \"totalFilledAmountSol\" in value;\n isInstance = isInstance && \"totalFilledAmountUsd\" in value;\n isInstance = isInstance && \"totalUnfilledAmount\" in value;\n isInstance = isInstance && \"totalUnfilledAmountSol\" in value;\n isInstance = isInstance && \"totalUnfilledAmountUsd\" in value;\n isInstance = isInstance && \"upperPoolPrice\" in value;\n isInstance = isInstance && \"userAddress\" in value;\n\n return isInstance;\n}\n\nexport function OpenLimitOrderDetailFromJSON(json: any): OpenLimitOrderDetail {\n return OpenLimitOrderDetailFromJSONTyped(json, false);\n}\n\nexport function OpenLimitOrderDetailFromJSONTyped(json: any, ignoreDiscriminator: boolean): OpenLimitOrderDetail {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'binDistribution': ((json['bin_distribution'] as Array<any>).map(OpenLimitOrderBinPointFromJSON)),\n 'filledInputAmount': json['filled_input_amount'],\n 'filledPct': json['filled_pct'],\n 'inputAmount': json['input_amount'],\n 'inputAmountSol': json['input_amount_sol'],\n 'inputAmountUsd': json['input_amount_usd'],\n 'inputToken': json['input_token'],\n 'inputTokenMint': json['input_token_mint'],\n 'isAskSide': json['is_ask_side'],\n 'limitOrderAddress': json['limit_order_address'],\n 'lowerPoolPrice': json['lower_pool_price'],\n 'nearestUnfilledBinId': !exists(json, 'nearest_unfilled_bin_id') ? undefined : json['nearest_unfilled_bin_id'],\n 'nearestUnfilledBinPrice': !exists(json, 'nearest_unfilled_bin_price') ? undefined : json['nearest_unfilled_bin_price'],\n 'openedAt': json['opened_at'],\n 'openedAtSignature': json['opened_at_signature'],\n 'openedAtSlot': json['opened_at_slot'],\n 'outputAmountExpected': json['output_amount_expected'],\n 'outputToken': json['output_token'],\n 'outputTokenMint': json['output_token_mint'],\n 'totalBonusSol': json['total_bonus_sol'],\n 'totalBonusUsd': json['total_bonus_usd'],\n 'totalBonusX': json['total_bonus_x'],\n 'totalBonusY': json['total_bonus_y'],\n 'totalFilledAmount': json['total_filled_amount'],\n 'totalFilledAmountSol': json['total_filled_amount_sol'],\n 'totalFilledAmountUsd': json['total_filled_amount_usd'],\n 'totalUnfilledAmount': json['total_unfilled_amount'],\n 'totalUnfilledAmountSol': json['total_unfilled_amount_sol'],\n 'totalUnfilledAmountUsd': json['total_unfilled_amount_usd'],\n 'upperPoolPrice': json['upper_pool_price'],\n 'userAddress': json['user_address'],\n };\n}\n\nexport function OpenLimitOrderDetailToJSON(value?: OpenLimitOrderDetail | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'bin_distribution': ((value.binDistribution as Array<any>).map(OpenLimitOrderBinPointToJSON)),\n 'filled_input_amount': value.filledInputAmount,\n 'filled_pct': value.filledPct,\n 'input_amount': value.inputAmount,\n 'input_amount_sol': value.inputAmountSol,\n 'input_amount_usd': value.inputAmountUsd,\n 'input_token': value.inputToken,\n 'input_token_mint': value.inputTokenMint,\n 'is_ask_side': value.isAskSide,\n 'limit_order_address': value.limitOrderAddress,\n 'lower_pool_price': value.lowerPoolPrice,\n 'nearest_unfilled_bin_id': value.nearestUnfilledBinId,\n 'nearest_unfilled_bin_price': value.nearestUnfilledBinPrice,\n 'opened_at': value.openedAt,\n 'opened_at_signature': value.openedAtSignature,\n 'opened_at_slot': value.openedAtSlot,\n 'output_amount_expected': value.outputAmountExpected,\n 'output_token': value.outputToken,\n 'output_token_mint': value.outputTokenMint,\n 'total_bonus_sol': value.totalBonusSol,\n 'total_bonus_usd': value.totalBonusUsd,\n 'total_bonus_x': value.totalBonusX,\n 'total_bonus_y': value.totalBonusY,\n 'total_filled_amount': value.totalFilledAmount,\n 'total_filled_amount_sol': value.totalFilledAmountSol,\n 'total_filled_amount_usd': value.totalFilledAmountUsd,\n 'total_unfilled_amount': value.totalUnfilledAmount,\n 'total_unfilled_amount_sol': value.totalUnfilledAmountSol,\n 'total_unfilled_amount_usd': value.totalUnfilledAmountUsd,\n 'upper_pool_price': value.upperPoolPrice,\n 'user_address': value.userAddress,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { LimitOrderPoolDetails } from './LimitOrderPoolDetails';\nimport {\n LimitOrderPoolDetailsFromJSON,\n LimitOrderPoolDetailsFromJSONTyped,\n LimitOrderPoolDetailsToJSON,\n} from './LimitOrderPoolDetails';\n\n/**\n * Pool-grouped summary of a user's live limit orders within a single pool.\n * `fully_filled_orders` counts orders whose summed `fulfilled_amount` across\n * bins has reached the summed `lo_amount` (deposit-amount weighted, matching\n * the per-order `filled_pct == 100`).\n * @export\n * @interface OpenLimitOrderPoolSummary\n */\nexport interface OpenLimitOrderPoolSummary {\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderPoolSummary\n */\n filledPct: string;\n /**\n * \n * @type {number}\n * @memberof OpenLimitOrderPoolSummary\n */\n fullyFilledOrders: number;\n /**\n * \n * @type {LimitOrderPoolDetails}\n * @memberof OpenLimitOrderPoolSummary\n */\n pool: LimitOrderPoolDetails;\n /**\n * SOL value of bonus (current spot SOL price).\n * @type {string}\n * @memberof OpenLimitOrderPoolSummary\n */\n totalBonusSol: string;\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderPoolSummary\n */\n totalBonusUsd: string;\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderPoolSummary\n */\n totalBonusX: string;\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderPoolSummary\n */\n totalBonusY: string;\n /**\n * SOL value of deposits, deposit-side only (placement-time SOL price).\n * @type {string}\n * @memberof OpenLimitOrderPoolSummary\n */\n totalDepositSol: string;\n /**\n * USD value of deposits, deposit-side only (an ask deposits X, a bid deposits Y).\n * @type {string}\n * @memberof OpenLimitOrderPoolSummary\n */\n totalDepositUsd: string;\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderPoolSummary\n */\n totalDepositX: string;\n /**\n * SOL value of token X deposits (placement-time SOL price).\n * @type {string}\n * @memberof OpenLimitOrderPoolSummary\n */\n totalDepositXSol: string;\n /**\n * USD value of token X deposits (placement-time price; only ask orders deposit X).\n * @type {string}\n * @memberof OpenLimitOrderPoolSummary\n */\n totalDepositXUsd: string;\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderPoolSummary\n */\n totalDepositY: string;\n /**\n * SOL value of token Y deposits (placement-time SOL price).\n * @type {string}\n * @memberof OpenLimitOrderPoolSummary\n */\n totalDepositYSol: string;\n /**\n * USD value of token Y deposits (placement-time price; only bid orders deposit Y).\n * @type {string}\n * @memberof OpenLimitOrderPoolSummary\n */\n totalDepositYUsd: string;\n /**\n * \n * @type {number}\n * @memberof OpenLimitOrderPoolSummary\n */\n totalOrders: number;\n /**\n * SOL value of withdrawals (cancel-event-time SOL price).\n * @type {string}\n * @memberof OpenLimitOrderPoolSummary\n */\n totalWithdrawalSol: string;\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderPoolSummary\n */\n totalWithdrawalUsd: string;\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderPoolSummary\n */\n totalWithdrawalX: string;\n /**\n * SOL value of token X withdrawn (cancel-event-time SOL price).\n * @type {string}\n * @memberof OpenLimitOrderPoolSummary\n */\n totalWithdrawalXSol: string;\n /**\n * USD value of token X withdrawn from cancel events (cancel-event-time USD price).\n * @type {string}\n * @memberof OpenLimitOrderPoolSummary\n */\n totalWithdrawalXUsd: string;\n /**\n * \n * @type {string}\n * @memberof OpenLimitOrderPoolSummary\n */\n totalWithdrawalY: string;\n /**\n * SOL value of token Y withdrawn (cancel-event-time SOL price).\n * @type {string}\n * @memberof OpenLimitOrderPoolSummary\n */\n totalWithdrawalYSol: string;\n /**\n * USD value of token Y withdrawn from cancel events (cancel-event-time USD price).\n * @type {string}\n * @memberof OpenLimitOrderPoolSummary\n */\n totalWithdrawalYUsd: string;\n}\n\n/**\n * Check if a given object implements the OpenLimitOrderPoolSummary interface.\n */\nexport function instanceOfOpenLimitOrderPoolSummary(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"filledPct\" in value;\n isInstance = isInstance && \"fullyFilledOrders\" in value;\n isInstance = isInstance && \"pool\" in value;\n isInstance = isInstance && \"totalBonusSol\" in value;\n isInstance = isInstance && \"totalBonusUsd\" in value;\n isInstance = isInstance && \"totalBonusX\" in value;\n isInstance = isInstance && \"totalBonusY\" in value;\n isInstance = isInstance && \"totalDepositSol\" in value;\n isInstance = isInstance && \"totalDepositUsd\" in value;\n isInstance = isInstance && \"totalDepositX\" in value;\n isInstance = isInstance && \"totalDepositXSol\" in value;\n isInstance = isInstance && \"totalDepositXUsd\" in value;\n isInstance = isInstance && \"totalDepositY\" in value;\n isInstance = isInstance && \"totalDepositYSol\" in value;\n isInstance = isInstance && \"totalDepositYUsd\" in value;\n isInstance = isInstance && \"totalOrders\" in value;\n isInstance = isInstance && \"totalWithdrawalSol\" in value;\n isInstance = isInstance && \"totalWithdrawalUsd\" in value;\n isInstance = isInstance && \"totalWithdrawalX\" in value;\n isInstance = isInstance && \"totalWithdrawalXSol\" in value;\n isInstance = isInstance && \"totalWithdrawalXUsd\" in value;\n isInstance = isInstance && \"totalWithdrawalY\" in value;\n isInstance = isInstance && \"totalWithdrawalYSol\" in value;\n isInstance = isInstance && \"totalWithdrawalYUsd\" in value;\n\n return isInstance;\n}\n\nexport function OpenLimitOrderPoolSummaryFromJSON(json: any): OpenLimitOrderPoolSummary {\n return OpenLimitOrderPoolSummaryFromJSONTyped(json, false);\n}\n\nexport function OpenLimitOrderPoolSummaryFromJSONTyped(json: any, ignoreDiscriminator: boolean): OpenLimitOrderPoolSummary {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'filledPct': json['filled_pct'],\n 'fullyFilledOrders': json['fully_filled_orders'],\n 'pool': LimitOrderPoolDetailsFromJSON(json['pool']),\n 'totalBonusSol': json['total_bonus_sol'],\n 'totalBonusUsd': json['total_bonus_usd'],\n 'totalBonusX': json['total_bonus_x'],\n 'totalBonusY': json['total_bonus_y'],\n 'totalDepositSol': json['total_deposit_sol'],\n 'totalDepositUsd': json['total_deposit_usd'],\n 'totalDepositX': json['total_deposit_x'],\n 'totalDepositXSol': json['total_deposit_x_sol'],\n 'totalDepositXUsd': json['total_deposit_x_usd'],\n 'totalDepositY': json['total_deposit_y'],\n 'totalDepositYSol': json['total_deposit_y_sol'],\n 'totalDepositYUsd': json['total_deposit_y_usd'],\n 'totalOrders': json['total_orders'],\n 'totalWithdrawalSol': json['total_withdrawal_sol'],\n 'totalWithdrawalUsd': json['total_withdrawal_usd'],\n 'totalWithdrawalX': json['total_withdrawal_x'],\n 'totalWithdrawalXSol': json['total_withdrawal_x_sol'],\n 'totalWithdrawalXUsd': json['total_withdrawal_x_usd'],\n 'totalWithdrawalY': json['total_withdrawal_y'],\n 'totalWithdrawalYSol': json['total_withdrawal_y_sol'],\n 'totalWithdrawalYUsd': json['total_withdrawal_y_usd'],\n };\n}\n\nexport function OpenLimitOrderPoolSummaryToJSON(value?: OpenLimitOrderPoolSummary | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'filled_pct': value.filledPct,\n 'fully_filled_orders': value.fullyFilledOrders,\n 'pool': LimitOrderPoolDetailsToJSON(value.pool),\n 'total_bonus_sol': value.totalBonusSol,\n 'total_bonus_usd': value.totalBonusUsd,\n 'total_bonus_x': value.totalBonusX,\n 'total_bonus_y': value.totalBonusY,\n 'total_deposit_sol': value.totalDepositSol,\n 'total_deposit_usd': value.totalDepositUsd,\n 'total_deposit_x': value.totalDepositX,\n 'total_deposit_x_sol': value.totalDepositXSol,\n 'total_deposit_x_usd': value.totalDepositXUsd,\n 'total_deposit_y': value.totalDepositY,\n 'total_deposit_y_sol': value.totalDepositYSol,\n 'total_deposit_y_usd': value.totalDepositYUsd,\n 'total_orders': value.totalOrders,\n 'total_withdrawal_sol': value.totalWithdrawalSol,\n 'total_withdrawal_usd': value.totalWithdrawalUsd,\n 'total_withdrawal_x': value.totalWithdrawalX,\n 'total_withdrawal_x_sol': value.totalWithdrawalXSol,\n 'total_withdrawal_x_usd': value.totalWithdrawalXUsd,\n 'total_withdrawal_y': value.totalWithdrawalY,\n 'total_withdrawal_y_sol': value.totalWithdrawalYSol,\n 'total_withdrawal_y_usd': value.totalWithdrawalYUsd,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { LimitOrderPoolDetails } from './LimitOrderPoolDetails';\nimport {\n LimitOrderPoolDetailsFromJSON,\n LimitOrderPoolDetailsFromJSONTyped,\n LimitOrderPoolDetailsToJSON,\n} from './LimitOrderPoolDetails';\nimport type { OpenLimitOrderDetail } from './OpenLimitOrderDetail';\nimport {\n OpenLimitOrderDetailFromJSON,\n OpenLimitOrderDetailFromJSONTyped,\n OpenLimitOrderDetailToJSON,\n} from './OpenLimitOrderDetail';\n\n/**\n * Top-level response for `GET /wallets/{wallet}/limit_orders/open/pools/{pool_address}`.\n * Pool metadata and live pool state are emitted once at the top; per-order\n * rows in `data` only carry order-specific fields.\n * @export\n * @interface OpenLimitOrdersForPoolResponse\n */\nexport interface OpenLimitOrdersForPoolResponse {\n /**\n * Live active bin id from the dynamic pool cache.\n * @type {number}\n * @memberof OpenLimitOrdersForPoolResponse\n */\n currentActiveBinId: number;\n /**\n * \n * @type {number}\n * @memberof OpenLimitOrdersForPoolResponse\n */\n currentPage: number;\n /**\n * Pool's live price (token Y per token X) from the dynamic pool cache.\n * @type {string}\n * @memberof OpenLimitOrdersForPoolResponse\n */\n currentPoolPrice: string;\n /**\n * \n * @type {Array<OpenLimitOrderDetail>}\n * @memberof OpenLimitOrdersForPoolResponse\n */\n data: Array<OpenLimitOrderDetail>;\n /**\n * \n * @type {number}\n * @memberof OpenLimitOrdersForPoolResponse\n */\n pageSize: number;\n /**\n * \n * @type {number}\n * @memberof OpenLimitOrdersForPoolResponse\n */\n pages: number;\n /**\n * \n * @type {LimitOrderPoolDetails}\n * @memberof OpenLimitOrdersForPoolResponse\n */\n pool: LimitOrderPoolDetails;\n /**\n * \n * @type {number}\n * @memberof OpenLimitOrdersForPoolResponse\n */\n total: number;\n}\n\n/**\n * Check if a given object implements the OpenLimitOrdersForPoolResponse interface.\n */\nexport function instanceOfOpenLimitOrdersForPoolResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"currentActiveBinId\" in value;\n isInstance = isInstance && \"currentPage\" in value;\n isInstance = isInstance && \"currentPoolPrice\" in value;\n isInstance = isInstance && \"data\" in value;\n isInstance = isInstance && \"pageSize\" in value;\n isInstance = isInstance && \"pages\" in value;\n isInstance = isInstance && \"pool\" in value;\n isInstance = isInstance && \"total\" in value;\n\n return isInstance;\n}\n\nexport function OpenLimitOrdersForPoolResponseFromJSON(json: any): OpenLimitOrdersForPoolResponse {\n return OpenLimitOrdersForPoolResponseFromJSONTyped(json, false);\n}\n\nexport function OpenLimitOrdersForPoolResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): OpenLimitOrdersForPoolResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'currentActiveBinId': json['current_active_bin_id'],\n 'currentPage': json['current_page'],\n 'currentPoolPrice': json['current_pool_price'],\n 'data': ((json['data'] as Array<any>).map(OpenLimitOrderDetailFromJSON)),\n 'pageSize': json['page_size'],\n 'pages': json['pages'],\n 'pool': LimitOrderPoolDetailsFromJSON(json['pool']),\n 'total': json['total'],\n };\n}\n\nexport function OpenLimitOrdersForPoolResponseToJSON(value?: OpenLimitOrdersForPoolResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'current_active_bin_id': value.currentActiveBinId,\n 'current_page': value.currentPage,\n 'current_pool_price': value.currentPoolPrice,\n 'data': ((value.data as Array<any>).map(OpenLimitOrderDetailToJSON)),\n 'page_size': value.pageSize,\n 'pages': value.pages,\n 'pool': LimitOrderPoolDetailsToJSON(value.pool),\n 'total': value.total,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { AmountTotals } from './AmountTotals';\nimport {\n AmountTotalsFromJSON,\n AmountTotalsFromJSONTyped,\n AmountTotalsToJSON,\n} from './AmountTotals';\nimport type { CurrentPosition } from './CurrentPosition';\nimport {\n CurrentPositionFromJSON,\n CurrentPositionFromJSONTyped,\n CurrentPositionToJSON,\n} from './CurrentPosition';\n\n/**\n * \n * @export\n * @interface OpenPosition\n */\nexport interface OpenPosition {\n /**\n * \n * @type {number}\n * @memberof OpenPosition\n */\n createdAt: number;\n /**\n * \n * @type {CurrentPosition}\n * @memberof OpenPosition\n */\n currentPosition: CurrentPosition;\n /**\n * \n * @type {number}\n * @memberof OpenPosition\n */\n lowerBinId: number;\n /**\n * \n * @type {number}\n * @memberof OpenPosition\n */\n lowerBinPrice: number;\n /**\n * \n * @type {string}\n * @memberof OpenPosition\n */\n poolAddress: string;\n /**\n * \n * @type {string}\n * @memberof OpenPosition\n */\n positionAddress: string;\n /**\n * \n * @type {AmountTotals}\n * @memberof OpenPosition\n */\n totalClaimedFees: AmountTotals;\n /**\n * \n * @type {AmountTotals}\n * @memberof OpenPosition\n */\n totalDeposits: AmountTotals;\n /**\n * \n * @type {AmountTotals}\n * @memberof OpenPosition\n */\n totalWithdraws: AmountTotals;\n /**\n * \n * @type {number}\n * @memberof OpenPosition\n */\n unrealizedPnl: number;\n /**\n * \n * @type {number}\n * @memberof OpenPosition\n */\n unrealizedPnlChangePct: number;\n /**\n * \n * @type {number}\n * @memberof OpenPosition\n */\n upperBinId: number;\n /**\n * \n * @type {number}\n * @memberof OpenPosition\n */\n upperBinPrice: number;\n}\n\n/**\n * Check if a given object implements the OpenPosition interface.\n */\nexport function instanceOfOpenPosition(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"createdAt\" in value;\n isInstance = isInstance && \"currentPosition\" in value;\n isInstance = isInstance && \"lowerBinId\" in value;\n isInstance = isInstance && \"lowerBinPrice\" in value;\n isInstance = isInstance && \"poolAddress\" in value;\n isInstance = isInstance && \"positionAddress\" in value;\n isInstance = isInstance && \"totalClaimedFees\" in value;\n isInstance = isInstance && \"totalDeposits\" in value;\n isInstance = isInstance && \"totalWithdraws\" in value;\n isInstance = isInstance && \"unrealizedPnl\" in value;\n isInstance = isInstance && \"unrealizedPnlChangePct\" in value;\n isInstance = isInstance && \"upperBinId\" in value;\n isInstance = isInstance && \"upperBinPrice\" in value;\n\n return isInstance;\n}\n\nexport function OpenPositionFromJSON(json: any): OpenPosition {\n return OpenPositionFromJSONTyped(json, false);\n}\n\nexport function OpenPositionFromJSONTyped(json: any, ignoreDiscriminator: boolean): OpenPosition {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'createdAt': json['created_at'],\n 'currentPosition': CurrentPositionFromJSON(json['current_position']),\n 'lowerBinId': json['lower_bin_id'],\n 'lowerBinPrice': json['lower_bin_price'],\n 'poolAddress': json['pool_address'],\n 'positionAddress': json['position_address'],\n 'totalClaimedFees': AmountTotalsFromJSON(json['total_claimed_fees']),\n 'totalDeposits': AmountTotalsFromJSON(json['total_deposits']),\n 'totalWithdraws': AmountTotalsFromJSON(json['total_withdraws']),\n 'unrealizedPnl': json['unrealized_pnl'],\n 'unrealizedPnlChangePct': json['unrealized_pnl_change_pct'],\n 'upperBinId': json['upper_bin_id'],\n 'upperBinPrice': json['upper_bin_price'],\n };\n}\n\nexport function OpenPositionToJSON(value?: OpenPosition | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'created_at': value.createdAt,\n 'current_position': CurrentPositionToJSON(value.currentPosition),\n 'lower_bin_id': value.lowerBinId,\n 'lower_bin_price': value.lowerBinPrice,\n 'pool_address': value.poolAddress,\n 'position_address': value.positionAddress,\n 'total_claimed_fees': AmountTotalsToJSON(value.totalClaimedFees),\n 'total_deposits': AmountTotalsToJSON(value.totalDeposits),\n 'total_withdraws': AmountTotalsToJSON(value.totalWithdraws),\n 'unrealized_pnl': value.unrealizedPnl,\n 'unrealized_pnl_change_pct': value.unrealizedPnlChangePct,\n 'upper_bin_id': value.upperBinId,\n 'upper_bin_price': value.upperBinPrice,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface Token\n */\nexport interface Token {\n /**\n * \n * @type {string}\n * @memberof Token\n */\n address: string;\n /**\n * \n * @type {number}\n * @memberof Token\n */\n decimals: number;\n /**\n * \n * @type {string}\n * @memberof Token\n */\n icon: string;\n /**\n * \n * @type {string}\n * @memberof Token\n */\n name: string;\n /**\n * \n * @type {string}\n * @memberof Token\n */\n symbol: string;\n}\n\n/**\n * Check if a given object implements the Token interface.\n */\nexport function instanceOfToken(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"address\" in value;\n isInstance = isInstance && \"decimals\" in value;\n isInstance = isInstance && \"icon\" in value;\n isInstance = isInstance && \"name\" in value;\n isInstance = isInstance && \"symbol\" in value;\n\n return isInstance;\n}\n\nexport function TokenFromJSON(json: any): Token {\n return TokenFromJSONTyped(json, false);\n}\n\nexport function TokenFromJSONTyped(json: any, ignoreDiscriminator: boolean): Token {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'address': json['address'],\n 'decimals': json['decimals'],\n 'icon': json['icon'],\n 'name': json['name'],\n 'symbol': json['symbol'],\n };\n}\n\nexport function TokenToJSON(value?: Token | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'address': value.address,\n 'decimals': value.decimals,\n 'icon': value.icon,\n 'name': value.name,\n 'symbol': value.symbol,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { OpenPosition } from './OpenPosition';\nimport {\n OpenPositionFromJSON,\n OpenPositionFromJSONTyped,\n OpenPositionToJSON,\n} from './OpenPosition';\nimport type { Token } from './Token';\nimport {\n TokenFromJSON,\n TokenFromJSONTyped,\n TokenToJSON,\n} from './Token';\n\n/**\n * \n * @export\n * @interface PositionsByPool\n */\nexport interface PositionsByPool {\n /**\n * \n * @type {number}\n * @memberof PositionsByPool\n */\n activeBinId: number;\n /**\n * \n * @type {number}\n * @memberof PositionsByPool\n */\n binStep: number;\n /**\n * \n * @type {number}\n * @memberof PositionsByPool\n */\n collectFeeMode: number;\n /**\n * \n * @type {number}\n * @memberof PositionsByPool\n */\n feePct: number;\n /**\n * \n * @type {string}\n * @memberof PositionsByPool\n */\n name: string;\n /**\n * \n * @type {string}\n * @memberof PositionsByPool\n */\n poolAddress: string;\n /**\n * \n * @type {number}\n * @memberof PositionsByPool\n */\n poolPrice?: number | null;\n /**\n * \n * @type {Array<OpenPosition>}\n * @memberof PositionsByPool\n */\n positions: Array<OpenPosition>;\n /**\n * \n * @type {Token}\n * @memberof PositionsByPool\n */\n tokenX: Token;\n /**\n * \n * @type {Token}\n * @memberof PositionsByPool\n */\n tokenY: Token;\n}\n\n/**\n * Check if a given object implements the PositionsByPool interface.\n */\nexport function instanceOfPositionsByPool(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"activeBinId\" in value;\n isInstance = isInstance && \"binStep\" in value;\n isInstance = isInstance && \"collectFeeMode\" in value;\n isInstance = isInstance && \"feePct\" in value;\n isInstance = isInstance && \"name\" in value;\n isInstance = isInstance && \"poolAddress\" in value;\n isInstance = isInstance && \"positions\" in value;\n isInstance = isInstance && \"tokenX\" in value;\n isInstance = isInstance && \"tokenY\" in value;\n\n return isInstance;\n}\n\nexport function PositionsByPoolFromJSON(json: any): PositionsByPool {\n return PositionsByPoolFromJSONTyped(json, false);\n}\n\nexport function PositionsByPoolFromJSONTyped(json: any, ignoreDiscriminator: boolean): PositionsByPool {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'activeBinId': json['active_bin_id'],\n 'binStep': json['bin_step'],\n 'collectFeeMode': json['collect_fee_mode'],\n 'feePct': json['fee_pct'],\n 'name': json['name'],\n 'poolAddress': json['pool_address'],\n 'poolPrice': !exists(json, 'pool_price') ? undefined : json['pool_price'],\n 'positions': ((json['positions'] as Array<any>).map(OpenPositionFromJSON)),\n 'tokenX': TokenFromJSON(json['token_x']),\n 'tokenY': TokenFromJSON(json['token_y']),\n };\n}\n\nexport function PositionsByPoolToJSON(value?: PositionsByPool | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'active_bin_id': value.activeBinId,\n 'bin_step': value.binStep,\n 'collect_fee_mode': value.collectFeeMode,\n 'fee_pct': value.feePct,\n 'name': value.name,\n 'pool_address': value.poolAddress,\n 'pool_price': value.poolPrice,\n 'positions': ((value.positions as Array<any>).map(OpenPositionToJSON)),\n 'token_x': TokenToJSON(value.tokenX),\n 'token_y': TokenToJSON(value.tokenY),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { PositionsByPool } from './PositionsByPool';\nimport {\n PositionsByPoolFromJSON,\n PositionsByPoolFromJSONTyped,\n PositionsByPoolToJSON,\n} from './PositionsByPool';\n\n/**\n * \n * @export\n * @interface OpenPositionsResponse\n */\nexport interface OpenPositionsResponse {\n /**\n * \n * @type {Array<PositionsByPool>}\n * @memberof OpenPositionsResponse\n */\n data: Array<PositionsByPool>;\n /**\n * \n * @type {number}\n * @memberof OpenPositionsResponse\n */\n totalPools: number;\n /**\n * \n * @type {number}\n * @memberof OpenPositionsResponse\n */\n totalPositions: number;\n}\n\n/**\n * Check if a given object implements the OpenPositionsResponse interface.\n */\nexport function instanceOfOpenPositionsResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"data\" in value;\n isInstance = isInstance && \"totalPools\" in value;\n isInstance = isInstance && \"totalPositions\" in value;\n\n return isInstance;\n}\n\nexport function OpenPositionsResponseFromJSON(json: any): OpenPositionsResponse {\n return OpenPositionsResponseFromJSONTyped(json, false);\n}\n\nexport function OpenPositionsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): OpenPositionsResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'data': ((json['data'] as Array<any>).map(PositionsByPoolFromJSON)),\n 'totalPools': json['total_pools'],\n 'totalPositions': json['total_positions'],\n };\n}\n\nexport function OpenPositionsResponseToJSON(value?: OpenPositionsResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'data': ((value.data as Array<any>).map(PositionsByPoolToJSON)),\n 'total_pools': value.totalPools,\n 'total_positions': value.totalPositions,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { LimitOrderPoolDetails } from './LimitOrderPoolDetails';\nimport {\n LimitOrderPoolDetailsFromJSON,\n LimitOrderPoolDetailsFromJSONTyped,\n LimitOrderPoolDetailsToJSON,\n} from './LimitOrderPoolDetails';\n\n/**\n * \n * @export\n * @interface PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\nexport interface PaginationResponseClosedLimitOrderPoolSummaryDataInner {\n /**\n * \n * @type {string}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n filledPct: string;\n /**\n * \n * @type {number}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n fullyFilledOrders: number;\n /**\n * Unix seconds. Latest close-event block time for this pool.\n * @type {number}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n lastClosedAt: number;\n /**\n * \n * @type {LimitOrderPoolDetails}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n pool: LimitOrderPoolDetails;\n /**\n * SOL value of bonus (cancel-event-time SOL price).\n * @type {string}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n totalBonusSol: string;\n /**\n * \n * @type {string}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n totalBonusUsd: string;\n /**\n * \n * @type {string}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n totalBonusX: string;\n /**\n * SOL value of token X bonus (cancel-event-time SOL price).\n * @type {string}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n totalBonusXSol: string;\n /**\n * USD value of token X bonus (cancel-event-time USD price).\n * @type {string}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n totalBonusXUsd: string;\n /**\n * \n * @type {string}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n totalBonusY: string;\n /**\n * SOL value of token Y bonus (cancel-event-time SOL price).\n * @type {string}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n totalBonusYSol: string;\n /**\n * USD value of token Y bonus (cancel-event-time USD price).\n * @type {string}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n totalBonusYUsd: string;\n /**\n * SOL value of deposits, deposit-side only (placement-time SOL price).\n * @type {string}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n totalDepositSol: string;\n /**\n * USD value of deposits, deposit-side only (an ask deposits X, a bid deposits Y).\n * @type {string}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n totalDepositUsd: string;\n /**\n * \n * @type {string}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n totalDepositX: string;\n /**\n * SOL value of token X deposits (placement-time SOL price).\n * @type {string}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n totalDepositXSol: string;\n /**\n * USD value of token X deposits (placement-time price; only ask orders deposit X).\n * @type {string}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n totalDepositXUsd: string;\n /**\n * \n * @type {string}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n totalDepositY: string;\n /**\n * SOL value of token Y deposits (placement-time SOL price).\n * @type {string}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n totalDepositYSol: string;\n /**\n * USD value of token Y deposits (placement-time price; only bid orders deposit Y).\n * @type {string}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n totalDepositYUsd: string;\n /**\n * \n * @type {number}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n totalOrders: number;\n /**\n * SOL value of withdrawals (cancel-event-time SOL price).\n * @type {string}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n totalWithdrawalSol: string;\n /**\n * \n * @type {string}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n totalWithdrawalUsd: string;\n /**\n * \n * @type {string}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n totalWithdrawalX: string;\n /**\n * SOL value of token X withdrawn (cancel-event-time SOL price).\n * @type {string}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n totalWithdrawalXSol: string;\n /**\n * USD value of token X withdrawn (cancel-event-time USD price).\n * @type {string}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n totalWithdrawalXUsd: string;\n /**\n * \n * @type {string}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n totalWithdrawalY: string;\n /**\n * SOL value of token Y withdrawn (cancel-event-time SOL price).\n * @type {string}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n totalWithdrawalYSol: string;\n /**\n * USD value of token Y withdrawn (cancel-event-time USD price).\n * @type {string}\n * @memberof PaginationResponseClosedLimitOrderPoolSummaryDataInner\n */\n totalWithdrawalYUsd: string;\n}\n\n/**\n * Check if a given object implements the PaginationResponseClosedLimitOrderPoolSummaryDataInner interface.\n */\nexport function instanceOfPaginationResponseClosedLimitOrderPoolSummaryDataInner(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"filledPct\" in value;\n isInstance = isInstance && \"fullyFilledOrders\" in value;\n isInstance = isInstance && \"lastClosedAt\" in value;\n isInstance = isInstance && \"pool\" in value;\n isInstance = isInstance && \"totalBonusSol\" in value;\n isInstance = isInstance && \"totalBonusUsd\" in value;\n isInstance = isInstance && \"totalBonusX\" in value;\n isInstance = isInstance && \"totalBonusXSol\" in value;\n isInstance = isInstance && \"totalBonusXUsd\" in value;\n isInstance = isInstance && \"totalBonusY\" in value;\n isInstance = isInstance && \"totalBonusYSol\" in value;\n isInstance = isInstance && \"totalBonusYUsd\" in value;\n isInstance = isInstance && \"totalDepositSol\" in value;\n isInstance = isInstance && \"totalDepositUsd\" in value;\n isInstance = isInstance && \"totalDepositX\" in value;\n isInstance = isInstance && \"totalDepositXSol\" in value;\n isInstance = isInstance && \"totalDepositXUsd\" in value;\n isInstance = isInstance && \"totalDepositY\" in value;\n isInstance = isInstance && \"totalDepositYSol\" in value;\n isInstance = isInstance && \"totalDepositYUsd\" in value;\n isInstance = isInstance && \"totalOrders\" in value;\n isInstance = isInstance && \"totalWithdrawalSol\" in value;\n isInstance = isInstance && \"totalWithdrawalUsd\" in value;\n isInstance = isInstance && \"totalWithdrawalX\" in value;\n isInstance = isInstance && \"totalWithdrawalXSol\" in value;\n isInstance = isInstance && \"totalWithdrawalXUsd\" in value;\n isInstance = isInstance && \"totalWithdrawalY\" in value;\n isInstance = isInstance && \"totalWithdrawalYSol\" in value;\n isInstance = isInstance && \"totalWithdrawalYUsd\" in value;\n\n return isInstance;\n}\n\nexport function PaginationResponseClosedLimitOrderPoolSummaryDataInnerFromJSON(json: any): PaginationResponseClosedLimitOrderPoolSummaryDataInner {\n return PaginationResponseClosedLimitOrderPoolSummaryDataInnerFromJSONTyped(json, false);\n}\n\nexport function PaginationResponseClosedLimitOrderPoolSummaryDataInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginationResponseClosedLimitOrderPoolSummaryDataInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'filledPct': json['filled_pct'],\n 'fullyFilledOrders': json['fully_filled_orders'],\n 'lastClosedAt': json['last_closed_at'],\n 'pool': LimitOrderPoolDetailsFromJSON(json['pool']),\n 'totalBonusSol': json['total_bonus_sol'],\n 'totalBonusUsd': json['total_bonus_usd'],\n 'totalBonusX': json['total_bonus_x'],\n 'totalBonusXSol': json['total_bonus_x_sol'],\n 'totalBonusXUsd': json['total_bonus_x_usd'],\n 'totalBonusY': json['total_bonus_y'],\n 'totalBonusYSol': json['total_bonus_y_sol'],\n 'totalBonusYUsd': json['total_bonus_y_usd'],\n 'totalDepositSol': json['total_deposit_sol'],\n 'totalDepositUsd': json['total_deposit_usd'],\n 'totalDepositX': json['total_deposit_x'],\n 'totalDepositXSol': json['total_deposit_x_sol'],\n 'totalDepositXUsd': json['total_deposit_x_usd'],\n 'totalDepositY': json['total_deposit_y'],\n 'totalDepositYSol': json['total_deposit_y_sol'],\n 'totalDepositYUsd': json['total_deposit_y_usd'],\n 'totalOrders': json['total_orders'],\n 'totalWithdrawalSol': json['total_withdrawal_sol'],\n 'totalWithdrawalUsd': json['total_withdrawal_usd'],\n 'totalWithdrawalX': json['total_withdrawal_x'],\n 'totalWithdrawalXSol': json['total_withdrawal_x_sol'],\n 'totalWithdrawalXUsd': json['total_withdrawal_x_usd'],\n 'totalWithdrawalY': json['total_withdrawal_y'],\n 'totalWithdrawalYSol': json['total_withdrawal_y_sol'],\n 'totalWithdrawalYUsd': json['total_withdrawal_y_usd'],\n };\n}\n\nexport function PaginationResponseClosedLimitOrderPoolSummaryDataInnerToJSON(value?: PaginationResponseClosedLimitOrderPoolSummaryDataInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'filled_pct': value.filledPct,\n 'fully_filled_orders': value.fullyFilledOrders,\n 'last_closed_at': value.lastClosedAt,\n 'pool': LimitOrderPoolDetailsToJSON(value.pool),\n 'total_bonus_sol': value.totalBonusSol,\n 'total_bonus_usd': value.totalBonusUsd,\n 'total_bonus_x': value.totalBonusX,\n 'total_bonus_x_sol': value.totalBonusXSol,\n 'total_bonus_x_usd': value.totalBonusXUsd,\n 'total_bonus_y': value.totalBonusY,\n 'total_bonus_y_sol': value.totalBonusYSol,\n 'total_bonus_y_usd': value.totalBonusYUsd,\n 'total_deposit_sol': value.totalDepositSol,\n 'total_deposit_usd': value.totalDepositUsd,\n 'total_deposit_x': value.totalDepositX,\n 'total_deposit_x_sol': value.totalDepositXSol,\n 'total_deposit_x_usd': value.totalDepositXUsd,\n 'total_deposit_y': value.totalDepositY,\n 'total_deposit_y_sol': value.totalDepositYSol,\n 'total_deposit_y_usd': value.totalDepositYUsd,\n 'total_orders': value.totalOrders,\n 'total_withdrawal_sol': value.totalWithdrawalSol,\n 'total_withdrawal_usd': value.totalWithdrawalUsd,\n 'total_withdrawal_x': value.totalWithdrawalX,\n 'total_withdrawal_x_sol': value.totalWithdrawalXSol,\n 'total_withdrawal_x_usd': value.totalWithdrawalXUsd,\n 'total_withdrawal_y': value.totalWithdrawalY,\n 'total_withdrawal_y_sol': value.totalWithdrawalYSol,\n 'total_withdrawal_y_usd': value.totalWithdrawalYUsd,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { PaginationResponseClosedLimitOrderPoolSummaryDataInner } from './PaginationResponseClosedLimitOrderPoolSummaryDataInner';\nimport {\n PaginationResponseClosedLimitOrderPoolSummaryDataInnerFromJSON,\n PaginationResponseClosedLimitOrderPoolSummaryDataInnerFromJSONTyped,\n PaginationResponseClosedLimitOrderPoolSummaryDataInnerToJSON,\n} from './PaginationResponseClosedLimitOrderPoolSummaryDataInner';\n\n/**\n * \n * @export\n * @interface PaginationResponseClosedLimitOrderPoolSummary\n */\nexport interface PaginationResponseClosedLimitOrderPoolSummary {\n /**\n * \n * @type {number}\n * @memberof PaginationResponseClosedLimitOrderPoolSummary\n */\n currentPage: number;\n /**\n * \n * @type {Array<PaginationResponseClosedLimitOrderPoolSummaryDataInner>}\n * @memberof PaginationResponseClosedLimitOrderPoolSummary\n */\n data: Array<PaginationResponseClosedLimitOrderPoolSummaryDataInner>;\n /**\n * \n * @type {number}\n * @memberof PaginationResponseClosedLimitOrderPoolSummary\n */\n pageSize: number;\n /**\n * \n * @type {number}\n * @memberof PaginationResponseClosedLimitOrderPoolSummary\n */\n pages: number;\n /**\n * \n * @type {number}\n * @memberof PaginationResponseClosedLimitOrderPoolSummary\n */\n total: number;\n}\n\n/**\n * Check if a given object implements the PaginationResponseClosedLimitOrderPoolSummary interface.\n */\nexport function instanceOfPaginationResponseClosedLimitOrderPoolSummary(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"currentPage\" in value;\n isInstance = isInstance && \"data\" in value;\n isInstance = isInstance && \"pageSize\" in value;\n isInstance = isInstance && \"pages\" in value;\n isInstance = isInstance && \"total\" in value;\n\n return isInstance;\n}\n\nexport function PaginationResponseClosedLimitOrderPoolSummaryFromJSON(json: any): PaginationResponseClosedLimitOrderPoolSummary {\n return PaginationResponseClosedLimitOrderPoolSummaryFromJSONTyped(json, false);\n}\n\nexport function PaginationResponseClosedLimitOrderPoolSummaryFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginationResponseClosedLimitOrderPoolSummary {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'currentPage': json['current_page'],\n 'data': ((json['data'] as Array<any>).map(PaginationResponseClosedLimitOrderPoolSummaryDataInnerFromJSON)),\n 'pageSize': json['page_size'],\n 'pages': json['pages'],\n 'total': json['total'],\n };\n}\n\nexport function PaginationResponseClosedLimitOrderPoolSummaryToJSON(value?: PaginationResponseClosedLimitOrderPoolSummary | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'current_page': value.currentPage,\n 'data': ((value.data as Array<any>).map(PaginationResponseClosedLimitOrderPoolSummaryDataInnerToJSON)),\n 'page_size': value.pageSize,\n 'pages': value.pages,\n 'total': value.total,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface PaginationResponseGroupResponseDataInner\n */\nexport interface PaginationResponseGroupResponseDataInner {\n /**\n * \n * @type {string}\n * @memberof PaginationResponseGroupResponseDataInner\n */\n groupName: string;\n /**\n * \n * @type {boolean}\n * @memberof PaginationResponseGroupResponseDataInner\n */\n hasFarm: boolean;\n /**\n * \n * @type {string}\n * @memberof PaginationResponseGroupResponseDataInner\n */\n lexicalOrderMints: string;\n /**\n * \n * @type {number}\n * @memberof PaginationResponseGroupResponseDataInner\n */\n maxFeeTvlRatio: number;\n /**\n * \n * @type {number}\n * @memberof PaginationResponseGroupResponseDataInner\n */\n poolCount: number;\n /**\n * \n * @type {string}\n * @memberof PaginationResponseGroupResponseDataInner\n */\n tokenX: string;\n /**\n * \n * @type {string}\n * @memberof PaginationResponseGroupResponseDataInner\n */\n tokenY: string;\n /**\n * \n * @type {number}\n * @memberof PaginationResponseGroupResponseDataInner\n */\n totalTvl: number;\n /**\n * \n * @type {number}\n * @memberof PaginationResponseGroupResponseDataInner\n */\n totalVolume: number;\n}\n\n/**\n * Check if a given object implements the PaginationResponseGroupResponseDataInner interface.\n */\nexport function instanceOfPaginationResponseGroupResponseDataInner(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"groupName\" in value;\n isInstance = isInstance && \"hasFarm\" in value;\n isInstance = isInstance && \"lexicalOrderMints\" in value;\n isInstance = isInstance && \"maxFeeTvlRatio\" in value;\n isInstance = isInstance && \"poolCount\" in value;\n isInstance = isInstance && \"tokenX\" in value;\n isInstance = isInstance && \"tokenY\" in value;\n isInstance = isInstance && \"totalTvl\" in value;\n isInstance = isInstance && \"totalVolume\" in value;\n\n return isInstance;\n}\n\nexport function PaginationResponseGroupResponseDataInnerFromJSON(json: any): PaginationResponseGroupResponseDataInner {\n return PaginationResponseGroupResponseDataInnerFromJSONTyped(json, false);\n}\n\nexport function PaginationResponseGroupResponseDataInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginationResponseGroupResponseDataInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'groupName': json['group_name'],\n 'hasFarm': json['has_farm'],\n 'lexicalOrderMints': json['lexical_order_mints'],\n 'maxFeeTvlRatio': json['max_fee_tvl_ratio'],\n 'poolCount': json['pool_count'],\n 'tokenX': json['token_x'],\n 'tokenY': json['token_y'],\n 'totalTvl': json['total_tvl'],\n 'totalVolume': json['total_volume'],\n };\n}\n\nexport function PaginationResponseGroupResponseDataInnerToJSON(value?: PaginationResponseGroupResponseDataInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'group_name': value.groupName,\n 'has_farm': value.hasFarm,\n 'lexical_order_mints': value.lexicalOrderMints,\n 'max_fee_tvl_ratio': value.maxFeeTvlRatio,\n 'pool_count': value.poolCount,\n 'token_x': value.tokenX,\n 'token_y': value.tokenY,\n 'total_tvl': value.totalTvl,\n 'total_volume': value.totalVolume,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { PaginationResponseGroupResponseDataInner } from './PaginationResponseGroupResponseDataInner';\nimport {\n PaginationResponseGroupResponseDataInnerFromJSON,\n PaginationResponseGroupResponseDataInnerFromJSONTyped,\n PaginationResponseGroupResponseDataInnerToJSON,\n} from './PaginationResponseGroupResponseDataInner';\n\n/**\n * \n * @export\n * @interface PaginationResponseGroupResponse\n */\nexport interface PaginationResponseGroupResponse {\n /**\n * \n * @type {number}\n * @memberof PaginationResponseGroupResponse\n */\n currentPage: number;\n /**\n * \n * @type {Array<PaginationResponseGroupResponseDataInner>}\n * @memberof PaginationResponseGroupResponse\n */\n data: Array<PaginationResponseGroupResponseDataInner>;\n /**\n * \n * @type {number}\n * @memberof PaginationResponseGroupResponse\n */\n pageSize: number;\n /**\n * \n * @type {number}\n * @memberof PaginationResponseGroupResponse\n */\n pages: number;\n /**\n * \n * @type {number}\n * @memberof PaginationResponseGroupResponse\n */\n total: number;\n}\n\n/**\n * Check if a given object implements the PaginationResponseGroupResponse interface.\n */\nexport function instanceOfPaginationResponseGroupResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"currentPage\" in value;\n isInstance = isInstance && \"data\" in value;\n isInstance = isInstance && \"pageSize\" in value;\n isInstance = isInstance && \"pages\" in value;\n isInstance = isInstance && \"total\" in value;\n\n return isInstance;\n}\n\nexport function PaginationResponseGroupResponseFromJSON(json: any): PaginationResponseGroupResponse {\n return PaginationResponseGroupResponseFromJSONTyped(json, false);\n}\n\nexport function PaginationResponseGroupResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginationResponseGroupResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'currentPage': json['current_page'],\n 'data': ((json['data'] as Array<any>).map(PaginationResponseGroupResponseDataInnerFromJSON)),\n 'pageSize': json['page_size'],\n 'pages': json['pages'],\n 'total': json['total'],\n };\n}\n\nexport function PaginationResponseGroupResponseToJSON(value?: PaginationResponseGroupResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'current_page': value.currentPage,\n 'data': ((value.data as Array<any>).map(PaginationResponseGroupResponseDataInnerToJSON)),\n 'page_size': value.pageSize,\n 'pages': value.pages,\n 'total': value.total,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { LimitOrderPoolDetails } from './LimitOrderPoolDetails';\nimport {\n LimitOrderPoolDetailsFromJSON,\n LimitOrderPoolDetailsFromJSONTyped,\n LimitOrderPoolDetailsToJSON,\n} from './LimitOrderPoolDetails';\n\n/**\n * Pool-grouped summary of a user's live limit orders within a single pool.\n * `fully_filled_orders` counts orders whose summed `fulfilled_amount` across\n * bins has reached the summed `lo_amount` (deposit-amount weighted, matching\n * the per-order `filled_pct == 100`).\n * @export\n * @interface PaginationResponseOpenLimitOrderPoolSummaryDataInner\n */\nexport interface PaginationResponseOpenLimitOrderPoolSummaryDataInner {\n /**\n * \n * @type {string}\n * @memberof PaginationResponseOpenLimitOrderPoolSummaryDataInner\n */\n filledPct: string;\n /**\n * \n * @type {number}\n * @memberof PaginationResponseOpenLimitOrderPoolSummaryDataInner\n */\n fullyFilledOrders: number;\n /**\n * \n * @type {LimitOrderPoolDetails}\n * @memberof PaginationResponseOpenLimitOrderPoolSummaryDataInner\n */\n pool: LimitOrderPoolDetails;\n /**\n * SOL value of bonus (current spot SOL price).\n * @type {string}\n * @memberof PaginationResponseOpenLimitOrderPoolSummaryDataInner\n */\n totalBonusSol: string;\n /**\n * \n * @type {string}\n * @memberof PaginationResponseOpenLimitOrderPoolSummaryDataInner\n */\n totalBonusUsd: string;\n /**\n * \n * @type {string}\n * @memberof PaginationResponseOpenLimitOrderPoolSummaryDataInner\n */\n totalBonusX: string;\n /**\n * \n * @type {string}\n * @memberof PaginationResponseOpenLimitOrderPoolSummaryDataInner\n */\n totalBonusY: string;\n /**\n * SOL value of deposits, deposit-side only (placement-time SOL price).\n * @type {string}\n * @memberof PaginationResponseOpenLimitOrderPoolSummaryDataInner\n */\n totalDepositSol: string;\n /**\n * USD value of deposits, deposit-side only (an ask deposits X, a bid deposits Y).\n * @type {string}\n * @memberof PaginationResponseOpenLimitOrderPoolSummaryDataInner\n */\n totalDepositUsd: string;\n /**\n * \n * @type {string}\n * @memberof PaginationResponseOpenLimitOrderPoolSummaryDataInner\n */\n totalDepositX: string;\n /**\n * SOL value of token X deposits (placement-time SOL price).\n * @type {string}\n * @memberof PaginationResponseOpenLimitOrderPoolSummaryDataInner\n */\n totalDepositXSol: string;\n /**\n * USD value of token X deposits (placement-time price; only ask orders deposit X).\n * @type {string}\n * @memberof PaginationResponseOpenLimitOrderPoolSummaryDataInner\n */\n totalDepositXUsd: string;\n /**\n * \n * @type {string}\n * @memberof PaginationResponseOpenLimitOrderPoolSummaryDataInner\n */\n totalDepositY: string;\n /**\n * SOL value of token Y deposits (placement-time SOL price).\n * @type {string}\n * @memberof PaginationResponseOpenLimitOrderPoolSummaryDataInner\n */\n totalDepositYSol: string;\n /**\n * USD value of token Y deposits (placement-time price; only bid orders deposit Y).\n * @type {string}\n * @memberof PaginationResponseOpenLimitOrderPoolSummaryDataInner\n */\n totalDepositYUsd: string;\n /**\n * \n * @type {number}\n * @memberof PaginationResponseOpenLimitOrderPoolSummaryDataInner\n */\n totalOrders: number;\n /**\n * SOL value of withdrawals (cancel-event-time SOL price).\n * @type {string}\n * @memberof PaginationResponseOpenLimitOrderPoolSummaryDataInner\n */\n totalWithdrawalSol: string;\n /**\n * \n * @type {string}\n * @memberof PaginationResponseOpenLimitOrderPoolSummaryDataInner\n */\n totalWithdrawalUsd: string;\n /**\n * \n * @type {string}\n * @memberof PaginationResponseOpenLimitOrderPoolSummaryDataInner\n */\n totalWithdrawalX: string;\n /**\n * SOL value of token X withdrawn (cancel-event-time SOL price).\n * @type {string}\n * @memberof PaginationResponseOpenLimitOrderPoolSummaryDataInner\n */\n totalWithdrawalXSol: string;\n /**\n * USD value of token X withdrawn from cancel events (cancel-event-time USD price).\n * @type {string}\n * @memberof PaginationResponseOpenLimitOrderPoolSummaryDataInner\n */\n totalWithdrawalXUsd: string;\n /**\n * \n * @type {string}\n * @memberof PaginationResponseOpenLimitOrderPoolSummaryDataInner\n */\n totalWithdrawalY: string;\n /**\n * SOL value of token Y withdrawn (cancel-event-time SOL price).\n * @type {string}\n * @memberof PaginationResponseOpenLimitOrderPoolSummaryDataInner\n */\n totalWithdrawalYSol: string;\n /**\n * USD value of token Y withdrawn from cancel events (cancel-event-time USD price).\n * @type {string}\n * @memberof PaginationResponseOpenLimitOrderPoolSummaryDataInner\n */\n totalWithdrawalYUsd: string;\n}\n\n/**\n * Check if a given object implements the PaginationResponseOpenLimitOrderPoolSummaryDataInner interface.\n */\nexport function instanceOfPaginationResponseOpenLimitOrderPoolSummaryDataInner(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"filledPct\" in value;\n isInstance = isInstance && \"fullyFilledOrders\" in value;\n isInstance = isInstance && \"pool\" in value;\n isInstance = isInstance && \"totalBonusSol\" in value;\n isInstance = isInstance && \"totalBonusUsd\" in value;\n isInstance = isInstance && \"totalBonusX\" in value;\n isInstance = isInstance && \"totalBonusY\" in value;\n isInstance = isInstance && \"totalDepositSol\" in value;\n isInstance = isInstance && \"totalDepositUsd\" in value;\n isInstance = isInstance && \"totalDepositX\" in value;\n isInstance = isInstance && \"totalDepositXSol\" in value;\n isInstance = isInstance && \"totalDepositXUsd\" in value;\n isInstance = isInstance && \"totalDepositY\" in value;\n isInstance = isInstance && \"totalDepositYSol\" in value;\n isInstance = isInstance && \"totalDepositYUsd\" in value;\n isInstance = isInstance && \"totalOrders\" in value;\n isInstance = isInstance && \"totalWithdrawalSol\" in value;\n isInstance = isInstance && \"totalWithdrawalUsd\" in value;\n isInstance = isInstance && \"totalWithdrawalX\" in value;\n isInstance = isInstance && \"totalWithdrawalXSol\" in value;\n isInstance = isInstance && \"totalWithdrawalXUsd\" in value;\n isInstance = isInstance && \"totalWithdrawalY\" in value;\n isInstance = isInstance && \"totalWithdrawalYSol\" in value;\n isInstance = isInstance && \"totalWithdrawalYUsd\" in value;\n\n return isInstance;\n}\n\nexport function PaginationResponseOpenLimitOrderPoolSummaryDataInnerFromJSON(json: any): PaginationResponseOpenLimitOrderPoolSummaryDataInner {\n return PaginationResponseOpenLimitOrderPoolSummaryDataInnerFromJSONTyped(json, false);\n}\n\nexport function PaginationResponseOpenLimitOrderPoolSummaryDataInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginationResponseOpenLimitOrderPoolSummaryDataInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'filledPct': json['filled_pct'],\n 'fullyFilledOrders': json['fully_filled_orders'],\n 'pool': LimitOrderPoolDetailsFromJSON(json['pool']),\n 'totalBonusSol': json['total_bonus_sol'],\n 'totalBonusUsd': json['total_bonus_usd'],\n 'totalBonusX': json['total_bonus_x'],\n 'totalBonusY': json['total_bonus_y'],\n 'totalDepositSol': json['total_deposit_sol'],\n 'totalDepositUsd': json['total_deposit_usd'],\n 'totalDepositX': json['total_deposit_x'],\n 'totalDepositXSol': json['total_deposit_x_sol'],\n 'totalDepositXUsd': json['total_deposit_x_usd'],\n 'totalDepositY': json['total_deposit_y'],\n 'totalDepositYSol': json['total_deposit_y_sol'],\n 'totalDepositYUsd': json['total_deposit_y_usd'],\n 'totalOrders': json['total_orders'],\n 'totalWithdrawalSol': json['total_withdrawal_sol'],\n 'totalWithdrawalUsd': json['total_withdrawal_usd'],\n 'totalWithdrawalX': json['total_withdrawal_x'],\n 'totalWithdrawalXSol': json['total_withdrawal_x_sol'],\n 'totalWithdrawalXUsd': json['total_withdrawal_x_usd'],\n 'totalWithdrawalY': json['total_withdrawal_y'],\n 'totalWithdrawalYSol': json['total_withdrawal_y_sol'],\n 'totalWithdrawalYUsd': json['total_withdrawal_y_usd'],\n };\n}\n\nexport function PaginationResponseOpenLimitOrderPoolSummaryDataInnerToJSON(value?: PaginationResponseOpenLimitOrderPoolSummaryDataInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'filled_pct': value.filledPct,\n 'fully_filled_orders': value.fullyFilledOrders,\n 'pool': LimitOrderPoolDetailsToJSON(value.pool),\n 'total_bonus_sol': value.totalBonusSol,\n 'total_bonus_usd': value.totalBonusUsd,\n 'total_bonus_x': value.totalBonusX,\n 'total_bonus_y': value.totalBonusY,\n 'total_deposit_sol': value.totalDepositSol,\n 'total_deposit_usd': value.totalDepositUsd,\n 'total_deposit_x': value.totalDepositX,\n 'total_deposit_x_sol': value.totalDepositXSol,\n 'total_deposit_x_usd': value.totalDepositXUsd,\n 'total_deposit_y': value.totalDepositY,\n 'total_deposit_y_sol': value.totalDepositYSol,\n 'total_deposit_y_usd': value.totalDepositYUsd,\n 'total_orders': value.totalOrders,\n 'total_withdrawal_sol': value.totalWithdrawalSol,\n 'total_withdrawal_usd': value.totalWithdrawalUsd,\n 'total_withdrawal_x': value.totalWithdrawalX,\n 'total_withdrawal_x_sol': value.totalWithdrawalXSol,\n 'total_withdrawal_x_usd': value.totalWithdrawalXUsd,\n 'total_withdrawal_y': value.totalWithdrawalY,\n 'total_withdrawal_y_sol': value.totalWithdrawalYSol,\n 'total_withdrawal_y_usd': value.totalWithdrawalYUsd,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { PaginationResponseOpenLimitOrderPoolSummaryDataInner } from './PaginationResponseOpenLimitOrderPoolSummaryDataInner';\nimport {\n PaginationResponseOpenLimitOrderPoolSummaryDataInnerFromJSON,\n PaginationResponseOpenLimitOrderPoolSummaryDataInnerFromJSONTyped,\n PaginationResponseOpenLimitOrderPoolSummaryDataInnerToJSON,\n} from './PaginationResponseOpenLimitOrderPoolSummaryDataInner';\n\n/**\n * \n * @export\n * @interface PaginationResponseOpenLimitOrderPoolSummary\n */\nexport interface PaginationResponseOpenLimitOrderPoolSummary {\n /**\n * \n * @type {number}\n * @memberof PaginationResponseOpenLimitOrderPoolSummary\n */\n currentPage: number;\n /**\n * \n * @type {Array<PaginationResponseOpenLimitOrderPoolSummaryDataInner>}\n * @memberof PaginationResponseOpenLimitOrderPoolSummary\n */\n data: Array<PaginationResponseOpenLimitOrderPoolSummaryDataInner>;\n /**\n * \n * @type {number}\n * @memberof PaginationResponseOpenLimitOrderPoolSummary\n */\n pageSize: number;\n /**\n * \n * @type {number}\n * @memberof PaginationResponseOpenLimitOrderPoolSummary\n */\n pages: number;\n /**\n * \n * @type {number}\n * @memberof PaginationResponseOpenLimitOrderPoolSummary\n */\n total: number;\n}\n\n/**\n * Check if a given object implements the PaginationResponseOpenLimitOrderPoolSummary interface.\n */\nexport function instanceOfPaginationResponseOpenLimitOrderPoolSummary(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"currentPage\" in value;\n isInstance = isInstance && \"data\" in value;\n isInstance = isInstance && \"pageSize\" in value;\n isInstance = isInstance && \"pages\" in value;\n isInstance = isInstance && \"total\" in value;\n\n return isInstance;\n}\n\nexport function PaginationResponseOpenLimitOrderPoolSummaryFromJSON(json: any): PaginationResponseOpenLimitOrderPoolSummary {\n return PaginationResponseOpenLimitOrderPoolSummaryFromJSONTyped(json, false);\n}\n\nexport function PaginationResponseOpenLimitOrderPoolSummaryFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginationResponseOpenLimitOrderPoolSummary {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'currentPage': json['current_page'],\n 'data': ((json['data'] as Array<any>).map(PaginationResponseOpenLimitOrderPoolSummaryDataInnerFromJSON)),\n 'pageSize': json['page_size'],\n 'pages': json['pages'],\n 'total': json['total'],\n };\n}\n\nexport function PaginationResponseOpenLimitOrderPoolSummaryToJSON(value?: PaginationResponseOpenLimitOrderPoolSummary | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'current_page': value.currentPage,\n 'data': ((value.data as Array<any>).map(PaginationResponseOpenLimitOrderPoolSummaryDataInnerToJSON)),\n 'page_size': value.pageSize,\n 'pages': value.pages,\n 'total': value.total,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { GetPools200ResponseDataInner } from './GetPools200ResponseDataInner';\nimport {\n GetPools200ResponseDataInnerFromJSON,\n GetPools200ResponseDataInnerFromJSONTyped,\n GetPools200ResponseDataInnerToJSON,\n} from './GetPools200ResponseDataInner';\n\n/**\n * \n * @export\n * @interface PaginationResponsePoolResponse\n */\nexport interface PaginationResponsePoolResponse {\n /**\n * \n * @type {number}\n * @memberof PaginationResponsePoolResponse\n */\n currentPage: number;\n /**\n * \n * @type {Array<GetPools200ResponseDataInner>}\n * @memberof PaginationResponsePoolResponse\n */\n data: Array<GetPools200ResponseDataInner>;\n /**\n * \n * @type {number}\n * @memberof PaginationResponsePoolResponse\n */\n pageSize: number;\n /**\n * \n * @type {number}\n * @memberof PaginationResponsePoolResponse\n */\n pages: number;\n /**\n * \n * @type {number}\n * @memberof PaginationResponsePoolResponse\n */\n total: number;\n}\n\n/**\n * Check if a given object implements the PaginationResponsePoolResponse interface.\n */\nexport function instanceOfPaginationResponsePoolResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"currentPage\" in value;\n isInstance = isInstance && \"data\" in value;\n isInstance = isInstance && \"pageSize\" in value;\n isInstance = isInstance && \"pages\" in value;\n isInstance = isInstance && \"total\" in value;\n\n return isInstance;\n}\n\nexport function PaginationResponsePoolResponseFromJSON(json: any): PaginationResponsePoolResponse {\n return PaginationResponsePoolResponseFromJSONTyped(json, false);\n}\n\nexport function PaginationResponsePoolResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginationResponsePoolResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'currentPage': json['current_page'],\n 'data': ((json['data'] as Array<any>).map(GetPools200ResponseDataInnerFromJSON)),\n 'pageSize': json['page_size'],\n 'pages': json['pages'],\n 'total': json['total'],\n };\n}\n\nexport function PaginationResponsePoolResponseToJSON(value?: PaginationResponsePoolResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'current_page': value.currentPage,\n 'data': ((value.data as Array<any>).map(GetPools200ResponseDataInnerToJSON)),\n 'page_size': value.pageSize,\n 'pages': value.pages,\n 'total': value.total,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface PoolAddressPath\n */\nexport interface PoolAddressPath {\n /**\n * \n * @type {string}\n * @memberof PoolAddressPath\n */\n poolAddress: string;\n}\n\n/**\n * Check if a given object implements the PoolAddressPath interface.\n */\nexport function instanceOfPoolAddressPath(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"poolAddress\" in value;\n\n return isInstance;\n}\n\nexport function PoolAddressPathFromJSON(json: any): PoolAddressPath {\n return PoolAddressPathFromJSONTyped(json, false);\n}\n\nexport function PoolAddressPathFromJSONTyped(json: any, ignoreDiscriminator: boolean): PoolAddressPath {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'poolAddress': json['pool_address'],\n };\n}\n\nexport function PoolAddressPathToJSON(value?: PoolAddressPath | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'pool_address': value.poolAddress,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { CumulativeMetrics } from './CumulativeMetrics';\nimport {\n CumulativeMetricsFromJSON,\n CumulativeMetricsFromJSONTyped,\n CumulativeMetricsToJSON,\n} from './CumulativeMetrics';\nimport type { PoolConfig } from './PoolConfig';\nimport {\n PoolConfigFromJSON,\n PoolConfigFromJSONTyped,\n PoolConfigToJSON,\n} from './PoolConfig';\nimport type { TimeWindowData } from './TimeWindowData';\nimport {\n TimeWindowDataFromJSON,\n TimeWindowDataFromJSONTyped,\n TimeWindowDataToJSON,\n} from './TimeWindowData';\nimport type { TokenMetrics } from './TokenMetrics';\nimport {\n TokenMetricsFromJSON,\n TokenMetricsFromJSONTyped,\n TokenMetricsToJSON,\n} from './TokenMetrics';\n\n/**\n * \n * @export\n * @interface PoolResponse\n */\nexport interface PoolResponse {\n /**\n * Address of the liquidity pair\n * @type {string}\n * @memberof PoolResponse\n */\n address: string;\n /**\n * 24 hour APR\n * @type {number}\n * @memberof PoolResponse\n */\n apr: number;\n /**\n * 24 hour APY\n * @type {number}\n * @memberof PoolResponse\n */\n apy: number;\n /**\n * Pool created at timestamp\n * @type {number}\n * @memberof PoolResponse\n */\n createdAt: number;\n /**\n * \n * @type {CumulativeMetrics}\n * @memberof PoolResponse\n */\n cumulativeMetrics: CumulativeMetrics;\n /**\n * Price of the liquidity pair\n * @type {number}\n * @memberof PoolResponse\n */\n currentPrice: number;\n /**\n * Dynamic fee rate. Which is equal to base fee + variable fee.\n * @type {number}\n * @memberof PoolResponse\n */\n dynamicFeePct: number;\n /**\n * Farm reward apr\n * @type {number}\n * @memberof PoolResponse\n */\n farmApr: number;\n /**\n * Farm reward apy\n * @type {number}\n * @memberof PoolResponse\n */\n farmApy: number;\n /**\n * \n * @type {TimeWindowData}\n * @memberof PoolResponse\n */\n feeTvlRatio: TimeWindowData;\n /**\n * \n * @type {TimeWindowData}\n * @memberof PoolResponse\n */\n fees: TimeWindowData;\n /**\n * Whether the pool has a farm or not\n * @type {boolean}\n * @memberof PoolResponse\n */\n hasFarm: boolean;\n /**\n * Flag to indicate whether the pair is blacklisted\n * @type {boolean}\n * @memberof PoolResponse\n */\n isBlacklisted: boolean;\n /**\n * Launchpad of the pair\n * @type {string}\n * @memberof PoolResponse\n */\n launchpad?: string | null;\n /**\n * Name of the liquidity pair\n * @type {string}\n * @memberof PoolResponse\n */\n name: string;\n /**\n * \n * @type {PoolConfig}\n * @memberof PoolResponse\n */\n poolConfig: PoolConfig;\n /**\n * \n * @type {TimeWindowData}\n * @memberof PoolResponse\n */\n protocolFees: TimeWindowData;\n /**\n * Address of token X reserve of the liquidity pair\n * @type {string}\n * @memberof PoolResponse\n */\n reserveX: string;\n /**\n * Address of token Y reserve of the liquidity pair\n * @type {string}\n * @memberof PoolResponse\n */\n reserveY: string;\n /**\n * Address of the farming reward X of the liquidity pair\n * @type {string}\n * @memberof PoolResponse\n */\n rewardMintX: string;\n /**\n * Address of the farming reward Y of the liquidity pair\n * @type {string}\n * @memberof PoolResponse\n */\n rewardMintY: string;\n /**\n * Tags of the pair\n * @type {Array<string>}\n * @memberof PoolResponse\n */\n tags: Array<string>;\n /**\n * \n * @type {TokenMetrics}\n * @memberof PoolResponse\n */\n tokenX: TokenMetrics;\n /**\n * Token X amount the liquidity pair hold\n * @type {number}\n * @memberof PoolResponse\n */\n tokenXAmount: number;\n /**\n * \n * @type {TokenMetrics}\n * @memberof PoolResponse\n */\n tokenY: TokenMetrics;\n /**\n * Token Y amount the liquidity pair hold\n * @type {number}\n * @memberof PoolResponse\n */\n tokenYAmount: number;\n /**\n * Total liquidity the liquidity pair holding. Also known as Total Value Locked\n * @type {number}\n * @memberof PoolResponse\n */\n tvl: number;\n /**\n * \n * @type {TimeWindowData}\n * @memberof PoolResponse\n */\n volume: TimeWindowData;\n}\n\n/**\n * Check if a given object implements the PoolResponse interface.\n */\nexport function instanceOfPoolResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"address\" in value;\n isInstance = isInstance && \"apr\" in value;\n isInstance = isInstance && \"apy\" in value;\n isInstance = isInstance && \"createdAt\" in value;\n isInstance = isInstance && \"cumulativeMetrics\" in value;\n isInstance = isInstance && \"currentPrice\" in value;\n isInstance = isInstance && \"dynamicFeePct\" in value;\n isInstance = isInstance && \"farmApr\" in value;\n isInstance = isInstance && \"farmApy\" in value;\n isInstance = isInstance && \"feeTvlRatio\" in value;\n isInstance = isInstance && \"fees\" in value;\n isInstance = isInstance && \"hasFarm\" in value;\n isInstance = isInstance && \"isBlacklisted\" in value;\n isInstance = isInstance && \"name\" in value;\n isInstance = isInstance && \"poolConfig\" in value;\n isInstance = isInstance && \"protocolFees\" in value;\n isInstance = isInstance && \"reserveX\" in value;\n isInstance = isInstance && \"reserveY\" in value;\n isInstance = isInstance && \"rewardMintX\" in value;\n isInstance = isInstance && \"rewardMintY\" in value;\n isInstance = isInstance && \"tags\" in value;\n isInstance = isInstance && \"tokenX\" in value;\n isInstance = isInstance && \"tokenXAmount\" in value;\n isInstance = isInstance && \"tokenY\" in value;\n isInstance = isInstance && \"tokenYAmount\" in value;\n isInstance = isInstance && \"tvl\" in value;\n isInstance = isInstance && \"volume\" in value;\n\n return isInstance;\n}\n\nexport function PoolResponseFromJSON(json: any): PoolResponse {\n return PoolResponseFromJSONTyped(json, false);\n}\n\nexport function PoolResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): PoolResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'address': json['address'],\n 'apr': json['apr'],\n 'apy': json['apy'],\n 'createdAt': json['created_at'],\n 'cumulativeMetrics': CumulativeMetricsFromJSON(json['cumulative_metrics']),\n 'currentPrice': json['current_price'],\n 'dynamicFeePct': json['dynamic_fee_pct'],\n 'farmApr': json['farm_apr'],\n 'farmApy': json['farm_apy'],\n 'feeTvlRatio': TimeWindowDataFromJSON(json['fee_tvl_ratio']),\n 'fees': TimeWindowDataFromJSON(json['fees']),\n 'hasFarm': json['has_farm'],\n 'isBlacklisted': json['is_blacklisted'],\n 'launchpad': !exists(json, 'launchpad') ? undefined : json['launchpad'],\n 'name': json['name'],\n 'poolConfig': PoolConfigFromJSON(json['pool_config']),\n 'protocolFees': TimeWindowDataFromJSON(json['protocol_fees']),\n 'reserveX': json['reserve_x'],\n 'reserveY': json['reserve_y'],\n 'rewardMintX': json['reward_mint_x'],\n 'rewardMintY': json['reward_mint_y'],\n 'tags': json['tags'],\n 'tokenX': TokenMetricsFromJSON(json['token_x']),\n 'tokenXAmount': json['token_x_amount'],\n 'tokenY': TokenMetricsFromJSON(json['token_y']),\n 'tokenYAmount': json['token_y_amount'],\n 'tvl': json['tvl'],\n 'volume': TimeWindowDataFromJSON(json['volume']),\n };\n}\n\nexport function PoolResponseToJSON(value?: PoolResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'address': value.address,\n 'apr': value.apr,\n 'apy': value.apy,\n 'created_at': value.createdAt,\n 'cumulative_metrics': CumulativeMetricsToJSON(value.cumulativeMetrics),\n 'current_price': value.currentPrice,\n 'dynamic_fee_pct': value.dynamicFeePct,\n 'farm_apr': value.farmApr,\n 'farm_apy': value.farmApy,\n 'fee_tvl_ratio': TimeWindowDataToJSON(value.feeTvlRatio),\n 'fees': TimeWindowDataToJSON(value.fees),\n 'has_farm': value.hasFarm,\n 'is_blacklisted': value.isBlacklisted,\n 'launchpad': value.launchpad,\n 'name': value.name,\n 'pool_config': PoolConfigToJSON(value.poolConfig),\n 'protocol_fees': TimeWindowDataToJSON(value.protocolFees),\n 'reserve_x': value.reserveX,\n 'reserve_y': value.reserveY,\n 'reward_mint_x': value.rewardMintX,\n 'reward_mint_y': value.rewardMintY,\n 'tags': value.tags,\n 'token_x': TokenMetricsToJSON(value.tokenX),\n 'token_x_amount': value.tokenXAmount,\n 'token_y': TokenMetricsToJSON(value.tokenY),\n 'token_y_amount': value.tokenYAmount,\n 'tvl': value.tvl,\n 'volume': TimeWindowDataToJSON(value.volume),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const PoolsSortBy = {\n Tvl: 'tvl',\n Volume24h: 'volume24h',\n Fee24h: 'fee24h'\n} as const;\nexport type PoolsSortBy = typeof PoolsSortBy[keyof typeof PoolsSortBy];\n\n\nexport function PoolsSortByFromJSON(json: any): PoolsSortBy {\n return PoolsSortByFromJSONTyped(json, false);\n}\n\nexport function PoolsSortByFromJSONTyped(json: any, ignoreDiscriminator: boolean): PoolsSortBy {\n return json as PoolsSortBy;\n}\n\nexport function PoolsSortByToJSON(value?: PoolsSortBy | null): any {\n return value as any;\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * Portfolio total PnL response\n * @export\n * @interface PortfolioTotalResponse\n */\nexport interface PortfolioTotalResponse {\n /**\n * Total PnL percentage change across all pools (USD)\n * @type {string}\n * @memberof PortfolioTotalResponse\n */\n totalPnlPctChange: string;\n /**\n * Total PnL in SOL across all pools (historical per-event SOL price)\n * @type {string}\n * @memberof PortfolioTotalResponse\n */\n totalPnlSol: string;\n /**\n * Total PnL percentage change across all pools (SOL)\n * @type {string}\n * @memberof PortfolioTotalResponse\n */\n totalPnlSolPctChange: string;\n /**\n * Total amount deposited in USD across all pools\n * NOTE: Commented out for now, but may be needed in the future\n * Total PnL in USD across all pools\n * @type {string}\n * @memberof PortfolioTotalResponse\n */\n totalPnlUsd: string;\n}\n\n/**\n * Check if a given object implements the PortfolioTotalResponse interface.\n */\nexport function instanceOfPortfolioTotalResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"totalPnlPctChange\" in value;\n isInstance = isInstance && \"totalPnlSol\" in value;\n isInstance = isInstance && \"totalPnlSolPctChange\" in value;\n isInstance = isInstance && \"totalPnlUsd\" in value;\n\n return isInstance;\n}\n\nexport function PortfolioTotalResponseFromJSON(json: any): PortfolioTotalResponse {\n return PortfolioTotalResponseFromJSONTyped(json, false);\n}\n\nexport function PortfolioTotalResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): PortfolioTotalResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'totalPnlPctChange': json['totalPnlPctChange'],\n 'totalPnlSol': json['totalPnlSol'],\n 'totalPnlSolPctChange': json['totalPnlSolPctChange'],\n 'totalPnlUsd': json['totalPnlUsd'],\n };\n}\n\nexport function PortfolioTotalResponseToJSON(value?: PortfolioTotalResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'totalPnlPctChange': value.totalPnlPctChange,\n 'totalPnlSol': value.totalPnlSol,\n 'totalPnlSolPctChange': value.totalPnlSolPctChange,\n 'totalPnlUsd': value.totalPnlUsd,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface ProtocolMetricsResponse\n */\nexport interface ProtocolMetricsResponse {\n /**\n * \n * @type {number}\n * @memberof ProtocolMetricsResponse\n */\n fee24h: number;\n /**\n * \n * @type {number}\n * @memberof ProtocolMetricsResponse\n */\n totalFees: number;\n /**\n * \n * @type {number}\n * @memberof ProtocolMetricsResponse\n */\n totalPools: number;\n /**\n * \n * @type {number}\n * @memberof ProtocolMetricsResponse\n */\n totalTvl: number;\n /**\n * \n * @type {number}\n * @memberof ProtocolMetricsResponse\n */\n totalVolume: number;\n /**\n * \n * @type {number}\n * @memberof ProtocolMetricsResponse\n */\n volume24h: number;\n}\n\n/**\n * Check if a given object implements the ProtocolMetricsResponse interface.\n */\nexport function instanceOfProtocolMetricsResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"fee24h\" in value;\n isInstance = isInstance && \"totalFees\" in value;\n isInstance = isInstance && \"totalPools\" in value;\n isInstance = isInstance && \"totalTvl\" in value;\n isInstance = isInstance && \"totalVolume\" in value;\n isInstance = isInstance && \"volume24h\" in value;\n\n return isInstance;\n}\n\nexport function ProtocolMetricsResponseFromJSON(json: any): ProtocolMetricsResponse {\n return ProtocolMetricsResponseFromJSONTyped(json, false);\n}\n\nexport function ProtocolMetricsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProtocolMetricsResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'fee24h': json['fee_24h'],\n 'totalFees': json['total_fees'],\n 'totalPools': json['total_pools'],\n 'totalTvl': json['total_tvl'],\n 'totalVolume': json['total_volume'],\n 'volume24h': json['volume_24h'],\n };\n}\n\nexport function ProtocolMetricsResponseToJSON(value?: ProtocolMetricsResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'fee_24h': value.fee24h,\n 'total_fees': value.totalFees,\n 'total_pools': value.totalPools,\n 'total_tvl': value.totalTvl,\n 'total_volume': value.totalVolume,\n 'volume_24h': value.volume24h,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * \n * @export\n */\nexport const TimeFrame = {\n _5m: '5m',\n _30m: '30m',\n _1h: '1h',\n _2h: '2h',\n _4h: '4h',\n _12h: '12h',\n _24h: '24h'\n} as const;\nexport type TimeFrame = typeof TimeFrame[keyof typeof TimeFrame];\n\n\nexport function TimeFrameFromJSON(json: any): TimeFrame {\n return TimeFrameFromJSONTyped(json, false);\n}\n\nexport function TimeFrameFromJSONTyped(json: any, ignoreDiscriminator: boolean): TimeFrame {\n return json as TimeFrame;\n}\n\nexport function TimeFrameToJSON(value?: TimeFrame | null): any {\n return value as any;\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TimeseriesResponseOHLCVResponseDataInner\n */\nexport interface TimeseriesResponseOHLCVResponseDataInner {\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseOHLCVResponseDataInner\n */\n close: number;\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseOHLCVResponseDataInner\n */\n high: number;\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseOHLCVResponseDataInner\n */\n low: number;\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseOHLCVResponseDataInner\n */\n open: number;\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseOHLCVResponseDataInner\n */\n timestamp: number;\n /**\n * \n * @type {string}\n * @memberof TimeseriesResponseOHLCVResponseDataInner\n */\n timestampStr: string;\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseOHLCVResponseDataInner\n */\n volume: number;\n}\n\n/**\n * Check if a given object implements the TimeseriesResponseOHLCVResponseDataInner interface.\n */\nexport function instanceOfTimeseriesResponseOHLCVResponseDataInner(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"close\" in value;\n isInstance = isInstance && \"high\" in value;\n isInstance = isInstance && \"low\" in value;\n isInstance = isInstance && \"open\" in value;\n isInstance = isInstance && \"timestamp\" in value;\n isInstance = isInstance && \"timestampStr\" in value;\n isInstance = isInstance && \"volume\" in value;\n\n return isInstance;\n}\n\nexport function TimeseriesResponseOHLCVResponseDataInnerFromJSON(json: any): TimeseriesResponseOHLCVResponseDataInner {\n return TimeseriesResponseOHLCVResponseDataInnerFromJSONTyped(json, false);\n}\n\nexport function TimeseriesResponseOHLCVResponseDataInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): TimeseriesResponseOHLCVResponseDataInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'close': json['close'],\n 'high': json['high'],\n 'low': json['low'],\n 'open': json['open'],\n 'timestamp': json['timestamp'],\n 'timestampStr': json['timestamp_str'],\n 'volume': json['volume'],\n };\n}\n\nexport function TimeseriesResponseOHLCVResponseDataInnerToJSON(value?: TimeseriesResponseOHLCVResponseDataInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'close': value.close,\n 'high': value.high,\n 'low': value.low,\n 'open': value.open,\n 'timestamp': value.timestamp,\n 'timestamp_str': value.timestampStr,\n 'volume': value.volume,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { TimeseriesResponseOHLCVResponseDataInner } from './TimeseriesResponseOHLCVResponseDataInner';\nimport {\n TimeseriesResponseOHLCVResponseDataInnerFromJSON,\n TimeseriesResponseOHLCVResponseDataInnerFromJSONTyped,\n TimeseriesResponseOHLCVResponseDataInnerToJSON,\n} from './TimeseriesResponseOHLCVResponseDataInner';\n\n/**\n * \n * @export\n * @interface TimeseriesResponseOHLCVResponse\n */\nexport interface TimeseriesResponseOHLCVResponse {\n /**\n * \n * @type {Array<TimeseriesResponseOHLCVResponseDataInner>}\n * @memberof TimeseriesResponseOHLCVResponse\n */\n data: Array<TimeseriesResponseOHLCVResponseDataInner>;\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseOHLCVResponse\n */\n endTime: number;\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseOHLCVResponse\n */\n startTime: number;\n /**\n * \n * @type {string}\n * @memberof TimeseriesResponseOHLCVResponse\n */\n timeframe?: string | null;\n}\n\n/**\n * Check if a given object implements the TimeseriesResponseOHLCVResponse interface.\n */\nexport function instanceOfTimeseriesResponseOHLCVResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"data\" in value;\n isInstance = isInstance && \"endTime\" in value;\n isInstance = isInstance && \"startTime\" in value;\n\n return isInstance;\n}\n\nexport function TimeseriesResponseOHLCVResponseFromJSON(json: any): TimeseriesResponseOHLCVResponse {\n return TimeseriesResponseOHLCVResponseFromJSONTyped(json, false);\n}\n\nexport function TimeseriesResponseOHLCVResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): TimeseriesResponseOHLCVResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'data': ((json['data'] as Array<any>).map(TimeseriesResponseOHLCVResponseDataInnerFromJSON)),\n 'endTime': json['end_time'],\n 'startTime': json['start_time'],\n 'timeframe': !exists(json, 'timeframe') ? undefined : json['timeframe'],\n };\n}\n\nexport function TimeseriesResponseOHLCVResponseToJSON(value?: TimeseriesResponseOHLCVResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'data': ((value.data as Array<any>).map(TimeseriesResponseOHLCVResponseDataInnerToJSON)),\n 'end_time': value.endTime,\n 'start_time': value.startTime,\n 'timeframe': value.timeframe,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface TimeseriesResponseVolumeHistoryResponseDataInner\n */\nexport interface TimeseriesResponseVolumeHistoryResponseDataInner {\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseVolumeHistoryResponseDataInner\n */\n fees: number;\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseVolumeHistoryResponseDataInner\n */\n protocolFees: number;\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseVolumeHistoryResponseDataInner\n */\n timestamp: number;\n /**\n * \n * @type {string}\n * @memberof TimeseriesResponseVolumeHistoryResponseDataInner\n */\n timestampStr: string;\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseVolumeHistoryResponseDataInner\n */\n volume: number;\n}\n\n/**\n * Check if a given object implements the TimeseriesResponseVolumeHistoryResponseDataInner interface.\n */\nexport function instanceOfTimeseriesResponseVolumeHistoryResponseDataInner(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"fees\" in value;\n isInstance = isInstance && \"protocolFees\" in value;\n isInstance = isInstance && \"timestamp\" in value;\n isInstance = isInstance && \"timestampStr\" in value;\n isInstance = isInstance && \"volume\" in value;\n\n return isInstance;\n}\n\nexport function TimeseriesResponseVolumeHistoryResponseDataInnerFromJSON(json: any): TimeseriesResponseVolumeHistoryResponseDataInner {\n return TimeseriesResponseVolumeHistoryResponseDataInnerFromJSONTyped(json, false);\n}\n\nexport function TimeseriesResponseVolumeHistoryResponseDataInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): TimeseriesResponseVolumeHistoryResponseDataInner {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'fees': json['fees'],\n 'protocolFees': json['protocol_fees'],\n 'timestamp': json['timestamp'],\n 'timestampStr': json['timestamp_str'],\n 'volume': json['volume'],\n };\n}\n\nexport function TimeseriesResponseVolumeHistoryResponseDataInnerToJSON(value?: TimeseriesResponseVolumeHistoryResponseDataInner | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'fees': value.fees,\n 'protocol_fees': value.protocolFees,\n 'timestamp': value.timestamp,\n 'timestamp_str': value.timestampStr,\n 'volume': value.volume,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { TimeseriesResponseVolumeHistoryResponseDataInner } from './TimeseriesResponseVolumeHistoryResponseDataInner';\nimport {\n TimeseriesResponseVolumeHistoryResponseDataInnerFromJSON,\n TimeseriesResponseVolumeHistoryResponseDataInnerFromJSONTyped,\n TimeseriesResponseVolumeHistoryResponseDataInnerToJSON,\n} from './TimeseriesResponseVolumeHistoryResponseDataInner';\n\n/**\n * \n * @export\n * @interface TimeseriesResponseVolumeHistoryResponse\n */\nexport interface TimeseriesResponseVolumeHistoryResponse {\n /**\n * \n * @type {Array<TimeseriesResponseVolumeHistoryResponseDataInner>}\n * @memberof TimeseriesResponseVolumeHistoryResponse\n */\n data: Array<TimeseriesResponseVolumeHistoryResponseDataInner>;\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseVolumeHistoryResponse\n */\n endTime: number;\n /**\n * \n * @type {number}\n * @memberof TimeseriesResponseVolumeHistoryResponse\n */\n startTime: number;\n /**\n * \n * @type {string}\n * @memberof TimeseriesResponseVolumeHistoryResponse\n */\n timeframe?: string | null;\n}\n\n/**\n * Check if a given object implements the TimeseriesResponseVolumeHistoryResponse interface.\n */\nexport function instanceOfTimeseriesResponseVolumeHistoryResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"data\" in value;\n isInstance = isInstance && \"endTime\" in value;\n isInstance = isInstance && \"startTime\" in value;\n\n return isInstance;\n}\n\nexport function TimeseriesResponseVolumeHistoryResponseFromJSON(json: any): TimeseriesResponseVolumeHistoryResponse {\n return TimeseriesResponseVolumeHistoryResponseFromJSONTyped(json, false);\n}\n\nexport function TimeseriesResponseVolumeHistoryResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): TimeseriesResponseVolumeHistoryResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'data': ((json['data'] as Array<any>).map(TimeseriesResponseVolumeHistoryResponseDataInnerFromJSON)),\n 'endTime': json['end_time'],\n 'startTime': json['start_time'],\n 'timeframe': !exists(json, 'timeframe') ? undefined : json['timeframe'],\n };\n}\n\nexport function TimeseriesResponseVolumeHistoryResponseToJSON(value?: TimeseriesResponseVolumeHistoryResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'data': ((value.data as Array<any>).map(TimeseriesResponseVolumeHistoryResponseDataInnerToJSON)),\n 'end_time': value.endTime,\n 'start_time': value.startTime,\n 'timeframe': value.timeframe,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface VolumeHistoryResponse\n */\nexport interface VolumeHistoryResponse {\n /**\n * \n * @type {number}\n * @memberof VolumeHistoryResponse\n */\n fees: number;\n /**\n * \n * @type {number}\n * @memberof VolumeHistoryResponse\n */\n protocolFees: number;\n /**\n * \n * @type {number}\n * @memberof VolumeHistoryResponse\n */\n timestamp: number;\n /**\n * \n * @type {string}\n * @memberof VolumeHistoryResponse\n */\n timestampStr: string;\n /**\n * \n * @type {number}\n * @memberof VolumeHistoryResponse\n */\n volume: number;\n}\n\n/**\n * Check if a given object implements the VolumeHistoryResponse interface.\n */\nexport function instanceOfVolumeHistoryResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"fees\" in value;\n isInstance = isInstance && \"protocolFees\" in value;\n isInstance = isInstance && \"timestamp\" in value;\n isInstance = isInstance && \"timestampStr\" in value;\n isInstance = isInstance && \"volume\" in value;\n\n return isInstance;\n}\n\nexport function VolumeHistoryResponseFromJSON(json: any): VolumeHistoryResponse {\n return VolumeHistoryResponseFromJSONTyped(json, false);\n}\n\nexport function VolumeHistoryResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): VolumeHistoryResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'fees': json['fees'],\n 'protocolFees': json['protocol_fees'],\n 'timestamp': json['timestamp'],\n 'timestampStr': json['timestamp_str'],\n 'volume': json['volume'],\n };\n}\n\nexport function VolumeHistoryResponseToJSON(value?: VolumeHistoryResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'fees': value.fees,\n 'protocol_fees': value.protocolFees,\n 'timestamp': value.timestamp,\n 'timestamp_str': value.timestampStr,\n 'volume': value.volume,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n BonusClaimedResponse,\n ClosedLimitOrdersForPoolResponse,\n ErrorResponse,\n LimitOrderSummaryResponse,\n OpenLimitOrdersForPoolResponse,\n PaginationResponseClosedLimitOrderPoolSummary,\n PaginationResponseOpenLimitOrderPoolSummary,\n} from '../models/index';\nimport {\n BonusClaimedResponseFromJSON,\n BonusClaimedResponseToJSON,\n ClosedLimitOrdersForPoolResponseFromJSON,\n ClosedLimitOrdersForPoolResponseToJSON,\n ErrorResponseFromJSON,\n ErrorResponseToJSON,\n LimitOrderSummaryResponseFromJSON,\n LimitOrderSummaryResponseToJSON,\n OpenLimitOrdersForPoolResponseFromJSON,\n OpenLimitOrdersForPoolResponseToJSON,\n PaginationResponseClosedLimitOrderPoolSummaryFromJSON,\n PaginationResponseClosedLimitOrderPoolSummaryToJSON,\n PaginationResponseOpenLimitOrderPoolSummaryFromJSON,\n PaginationResponseOpenLimitOrderPoolSummaryToJSON,\n} from '../models/index';\n\nexport interface GetBonusClaimedForPoolRequest {\n wallet: string;\n poolAddress: string;\n}\n\nexport interface GetClosedLimitOrderPoolsRequest {\n wallet: string;\n page?: number | null;\n pageSize?: number | null;\n}\n\nexport interface GetClosedLimitOrdersForPoolRequest {\n wallet: string;\n poolAddress: string;\n page?: number | null;\n pageSize?: number | null;\n}\n\nexport interface GetLimitOrderSummaryRequest {\n wallet: string;\n}\n\nexport interface GetOpenLimitOrderPoolsRequest {\n wallet: string;\n page?: number | null;\n pageSize?: number | null;\n}\n\nexport interface GetOpenLimitOrdersForPoolRequest {\n wallet: string;\n poolAddress: string;\n page?: number | null;\n pageSize?: number | null;\n}\n\n/**\n * \n */\nexport class LimitOrdersApi extends runtime.BaseAPI {\n\n /**\n * Returns the total realized bonus a wallet has claimed on one DLMM pool, aggregated across every cancel event the wallet has on the pool. Includes cancels on orders that have not yet been closed (a cancel pays bonus immediately; the on-chain account is closed separately via `CloseLimitOrderIfEmpty`). USD/SOL values are derived using each cancel row\\'s stored cancel-time price ratios — not current spot.\n * Get Bonus Claimed For Pool\n */\n async getBonusClaimedForPoolRaw(requestParameters: GetBonusClaimedForPoolRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<BonusClaimedResponse>> {\n if (requestParameters.wallet === null || requestParameters.wallet === undefined) {\n throw new runtime.RequiredError('wallet','Required parameter requestParameters.wallet was null or undefined when calling getBonusClaimedForPool.');\n }\n\n if (requestParameters.poolAddress === null || requestParameters.poolAddress === undefined) {\n throw new runtime.RequiredError('poolAddress','Required parameter requestParameters.poolAddress was null or undefined when calling getBonusClaimedForPool.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/wallets/{wallet}/limit_orders/pools/{pool_address}/bonus_claimed`.replace(`{${\"wallet\"}}`, encodeURIComponent(String(requestParameters.wallet))).replace(`{${\"pool_address\"}}`, encodeURIComponent(String(requestParameters.poolAddress))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => BonusClaimedResponseFromJSON(jsonValue));\n }\n\n /**\n * Returns the total realized bonus a wallet has claimed on one DLMM pool, aggregated across every cancel event the wallet has on the pool. Includes cancels on orders that have not yet been closed (a cancel pays bonus immediately; the on-chain account is closed separately via `CloseLimitOrderIfEmpty`). USD/SOL values are derived using each cancel row\\'s stored cancel-time price ratios — not current spot.\n * Get Bonus Claimed For Pool\n */\n async getBonusClaimedForPool(requestParameters: GetBonusClaimedForPoolRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<BonusClaimedResponse> {\n const response = await this.getBonusClaimedForPoolRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Paginated per-pool summary of the wallet\\'s closed limit orders, sorted by `last_closed_at` DESC. A limit order is closed iff it has a row in `close_limit_orders` — cancel-only orders remain in `/open`.\n * Get Closed Limit Order Pools\n */\n async getClosedLimitOrderPoolsRaw(requestParameters: GetClosedLimitOrderPoolsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PaginationResponseClosedLimitOrderPoolSummary>> {\n if (requestParameters.wallet === null || requestParameters.wallet === undefined) {\n throw new runtime.RequiredError('wallet','Required parameter requestParameters.wallet was null or undefined when calling getClosedLimitOrderPools.');\n }\n\n const queryParameters: any = {};\n\n if (requestParameters.page !== undefined) {\n queryParameters['page'] = requestParameters.page;\n }\n\n if (requestParameters.pageSize !== undefined) {\n queryParameters['page_size'] = requestParameters.pageSize;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/wallets/{wallet}/limit_orders/closed/pools`.replace(`{${\"wallet\"}}`, encodeURIComponent(String(requestParameters.wallet))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PaginationResponseClosedLimitOrderPoolSummaryFromJSON(jsonValue));\n }\n\n /**\n * Paginated per-pool summary of the wallet\\'s closed limit orders, sorted by `last_closed_at` DESC. A limit order is closed iff it has a row in `close_limit_orders` — cancel-only orders remain in `/open`.\n * Get Closed Limit Order Pools\n */\n async getClosedLimitOrderPools(requestParameters: GetClosedLimitOrderPoolsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PaginationResponseClosedLimitOrderPoolSummary> {\n const response = await this.getClosedLimitOrderPoolsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Paginated per-order lifecycle view for the wallet\\'s closed limit orders in one pool, sorted by `last_closed_at` DESC.\n * Get Closed Limit Orders For Pool\n */\n async getClosedLimitOrdersForPoolRaw(requestParameters: GetClosedLimitOrdersForPoolRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ClosedLimitOrdersForPoolResponse>> {\n if (requestParameters.wallet === null || requestParameters.wallet === undefined) {\n throw new runtime.RequiredError('wallet','Required parameter requestParameters.wallet was null or undefined when calling getClosedLimitOrdersForPool.');\n }\n\n if (requestParameters.poolAddress === null || requestParameters.poolAddress === undefined) {\n throw new runtime.RequiredError('poolAddress','Required parameter requestParameters.poolAddress was null or undefined when calling getClosedLimitOrdersForPool.');\n }\n\n const queryParameters: any = {};\n\n if (requestParameters.page !== undefined) {\n queryParameters['page'] = requestParameters.page;\n }\n\n if (requestParameters.pageSize !== undefined) {\n queryParameters['page_size'] = requestParameters.pageSize;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/wallets/{wallet}/limit_orders/closed/pools/{pool_address}`.replace(`{${\"wallet\"}}`, encodeURIComponent(String(requestParameters.wallet))).replace(`{${\"pool_address\"}}`, encodeURIComponent(String(requestParameters.poolAddress))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ClosedLimitOrdersForPoolResponseFromJSON(jsonValue));\n }\n\n /**\n * Paginated per-order lifecycle view for the wallet\\'s closed limit orders in one pool, sorted by `last_closed_at` DESC.\n * Get Closed Limit Orders For Pool\n */\n async getClosedLimitOrdersForPool(requestParameters: GetClosedLimitOrdersForPoolRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ClosedLimitOrdersForPoolResponse> {\n const response = await this.getClosedLimitOrdersForPoolRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Returns aggregate totals for a user\\'s limit orders across all pools: open/closed order counts, total deposit value, and total bonus fees earned. \\\"Open\\\" means placed with no `close_limit_orders` row. \\\"Closed\\\" means the order has a `close_limit_orders` row (`CloseLimitOrderIfEmpty` was invoked).\n * Get Limit Order Summary\n */\n async getLimitOrderSummaryRaw(requestParameters: GetLimitOrderSummaryRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<LimitOrderSummaryResponse>> {\n if (requestParameters.wallet === null || requestParameters.wallet === undefined) {\n throw new runtime.RequiredError('wallet','Required parameter requestParameters.wallet was null or undefined when calling getLimitOrderSummary.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/wallets/{wallet}/limit_orders/summary`.replace(`{${\"wallet\"}}`, encodeURIComponent(String(requestParameters.wallet))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => LimitOrderSummaryResponseFromJSON(jsonValue));\n }\n\n /**\n * Returns aggregate totals for a user\\'s limit orders across all pools: open/closed order counts, total deposit value, and total bonus fees earned. \\\"Open\\\" means placed with no `close_limit_orders` row. \\\"Closed\\\" means the order has a `close_limit_orders` row (`CloseLimitOrderIfEmpty` was invoked).\n * Get Limit Order Summary\n */\n async getLimitOrderSummary(requestParameters: GetLimitOrderSummaryRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<LimitOrderSummaryResponse> {\n const response = await this.getLimitOrderSummaryRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Paginated per-pool summary of the wallet\\'s live limit orders, sorted by deposit USD DESC. A limit order is live until it has a `close_limit_orders` row — cancels do not remove it from this view.\n * Get Open Limit Order Pools\n */\n async getOpenLimitOrderPoolsRaw(requestParameters: GetOpenLimitOrderPoolsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PaginationResponseOpenLimitOrderPoolSummary>> {\n if (requestParameters.wallet === null || requestParameters.wallet === undefined) {\n throw new runtime.RequiredError('wallet','Required parameter requestParameters.wallet was null or undefined when calling getOpenLimitOrderPools.');\n }\n\n const queryParameters: any = {};\n\n if (requestParameters.page !== undefined) {\n queryParameters['page'] = requestParameters.page;\n }\n\n if (requestParameters.pageSize !== undefined) {\n queryParameters['page_size'] = requestParameters.pageSize;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/wallets/{wallet}/limit_orders/open/pools`.replace(`{${\"wallet\"}}`, encodeURIComponent(String(requestParameters.wallet))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PaginationResponseOpenLimitOrderPoolSummaryFromJSON(jsonValue));\n }\n\n /**\n * Paginated per-pool summary of the wallet\\'s live limit orders, sorted by deposit USD DESC. A limit order is live until it has a `close_limit_orders` row — cancels do not remove it from this view.\n * Get Open Limit Order Pools\n */\n async getOpenLimitOrderPools(requestParameters: GetOpenLimitOrderPoolsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PaginationResponseOpenLimitOrderPoolSummary> {\n const response = await this.getOpenLimitOrderPoolsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Paginated per-order detail for the wallet\\'s live limit orders in one pool, sorted by placement time DESC. \\\"Live\\\" = has no `close_limit_orders` row.\n * Get Open Limit Orders For Pool\n */\n async getOpenLimitOrdersForPoolRaw(requestParameters: GetOpenLimitOrdersForPoolRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<OpenLimitOrdersForPoolResponse>> {\n if (requestParameters.wallet === null || requestParameters.wallet === undefined) {\n throw new runtime.RequiredError('wallet','Required parameter requestParameters.wallet was null or undefined when calling getOpenLimitOrdersForPool.');\n }\n\n if (requestParameters.poolAddress === null || requestParameters.poolAddress === undefined) {\n throw new runtime.RequiredError('poolAddress','Required parameter requestParameters.poolAddress was null or undefined when calling getOpenLimitOrdersForPool.');\n }\n\n const queryParameters: any = {};\n\n if (requestParameters.page !== undefined) {\n queryParameters['page'] = requestParameters.page;\n }\n\n if (requestParameters.pageSize !== undefined) {\n queryParameters['page_size'] = requestParameters.pageSize;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/wallets/{wallet}/limit_orders/open/pools/{pool_address}`.replace(`{${\"wallet\"}}`, encodeURIComponent(String(requestParameters.wallet))).replace(`{${\"pool_address\"}}`, encodeURIComponent(String(requestParameters.poolAddress))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => OpenLimitOrdersForPoolResponseFromJSON(jsonValue));\n }\n\n /**\n * Paginated per-order detail for the wallet\\'s live limit orders in one pool, sorted by placement time DESC. \\\"Live\\\" = has no `close_limit_orders` row.\n * Get Open Limit Orders For Pool\n */\n async getOpenLimitOrdersForPool(requestParameters: GetOpenLimitOrdersForPoolRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<OpenLimitOrdersForPoolResponse> {\n const response = await this.getOpenLimitOrdersForPoolRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ErrorResponse,\n GetPools200Response,\n PaginationResponseGroupResponse,\n PaginationResponsePoolResponse,\n PoolResponse,\n TimeFrame,\n TimeseriesResponseOHLCVResponse,\n TimeseriesResponseVolumeHistoryResponse,\n} from '../models/index';\nimport {\n ErrorResponseFromJSON,\n ErrorResponseToJSON,\n GetPools200ResponseFromJSON,\n GetPools200ResponseToJSON,\n PaginationResponseGroupResponseFromJSON,\n PaginationResponseGroupResponseToJSON,\n PaginationResponsePoolResponseFromJSON,\n PaginationResponsePoolResponseToJSON,\n PoolResponseFromJSON,\n PoolResponseToJSON,\n TimeFrameFromJSON,\n TimeFrameToJSON,\n TimeseriesResponseOHLCVResponseFromJSON,\n TimeseriesResponseOHLCVResponseToJSON,\n TimeseriesResponseVolumeHistoryResponseFromJSON,\n TimeseriesResponseVolumeHistoryResponseToJSON,\n} from '../models/index';\n\nexport interface GetGroupRequest {\n lexicalOrderMints: string;\n page?: number | null;\n pageSize?: number | null;\n query?: string | null;\n sortBy?: string | null;\n filterBy?: string | null;\n}\n\nexport interface GetGroupsRequest {\n page?: number | null;\n pageSize?: number | null;\n query?: string | null;\n sortBy?: string | null;\n filterBy?: string | null;\n volumeTw?: string | null;\n feeTvlRatioTw?: string | null;\n}\n\nexport interface GetHistoricalVolumeRequest {\n address: string;\n timeframe?: TimeFrame | null;\n startTime?: number;\n endTime?: number;\n}\n\nexport interface GetOHLCVRequest {\n address: string;\n timeframe?: string;\n startTime?: number;\n endTime?: number;\n}\n\nexport interface GetPoolRequest {\n address: string;\n}\n\nexport interface GetPoolsRequest {\n page?: number | null;\n pageSize?: number | null;\n query?: string | null;\n sortBy?: string | null;\n filterBy?: string | null;\n}\n\n/**\n * \n */\nexport class PoolsApi extends runtime.BaseAPI {\n\n /**\n * Returns a paginated list of pools that belong to a specific pool group\n * Group\n */\n async getGroupRaw(requestParameters: GetGroupRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PaginationResponsePoolResponse>> {\n if (requestParameters.lexicalOrderMints === null || requestParameters.lexicalOrderMints === undefined) {\n throw new runtime.RequiredError('lexicalOrderMints','Required parameter requestParameters.lexicalOrderMints was null or undefined when calling getGroup.');\n }\n\n const queryParameters: any = {};\n\n if (requestParameters.page !== undefined) {\n queryParameters['page'] = requestParameters.page;\n }\n\n if (requestParameters.pageSize !== undefined) {\n queryParameters['page_size'] = requestParameters.pageSize;\n }\n\n if (requestParameters.query !== undefined) {\n queryParameters['query'] = requestParameters.query;\n }\n\n if (requestParameters.sortBy !== undefined) {\n queryParameters['sort_by'] = requestParameters.sortBy;\n }\n\n if (requestParameters.filterBy !== undefined) {\n queryParameters['filter_by'] = requestParameters.filterBy;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/pools/groups/{lexical_order_mints}`.replace(`{${\"lexical_order_mints\"}}`, encodeURIComponent(String(requestParameters.lexicalOrderMints))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PaginationResponsePoolResponseFromJSON(jsonValue));\n }\n\n /**\n * Returns a paginated list of pools that belong to a specific pool group\n * Group\n */\n async getGroup(requestParameters: GetGroupRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PaginationResponsePoolResponse> {\n const response = await this.getGroupRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Returns a paginated list of pool groups\n * Groups\n */\n async getGroupsRaw(requestParameters: GetGroupsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PaginationResponseGroupResponse>> {\n const queryParameters: any = {};\n\n if (requestParameters.page !== undefined) {\n queryParameters['page'] = requestParameters.page;\n }\n\n if (requestParameters.pageSize !== undefined) {\n queryParameters['page_size'] = requestParameters.pageSize;\n }\n\n if (requestParameters.query !== undefined) {\n queryParameters['query'] = requestParameters.query;\n }\n\n if (requestParameters.sortBy !== undefined) {\n queryParameters['sort_by'] = requestParameters.sortBy;\n }\n\n if (requestParameters.filterBy !== undefined) {\n queryParameters['filter_by'] = requestParameters.filterBy;\n }\n\n if (requestParameters.volumeTw !== undefined) {\n queryParameters['volume_tw'] = requestParameters.volumeTw;\n }\n\n if (requestParameters.feeTvlRatioTw !== undefined) {\n queryParameters['fee_tvl_ratio_tw'] = requestParameters.feeTvlRatioTw;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/pools/groups`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PaginationResponseGroupResponseFromJSON(jsonValue));\n }\n\n /**\n * Returns a paginated list of pool groups\n * Groups\n */\n async getGroups(requestParameters: GetGroupsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PaginationResponseGroupResponse> {\n const response = await this.getGroupsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Returns historical volume for a pool aggregated into time buckets **Notes** - If both `start_time` and `end_time` are provided, the result covers the range `[start_time, end_time]` - If only one of `start_time` or `end_time` is provided, the missing bound is inferred using the selected `timeframe` - If neither is provided, a default range is used based on `timeframe`\n * Historical Volume\n */\n async getHistoricalVolumeRaw(requestParameters: GetHistoricalVolumeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TimeseriesResponseVolumeHistoryResponse>> {\n if (requestParameters.address === null || requestParameters.address === undefined) {\n throw new runtime.RequiredError('address','Required parameter requestParameters.address was null or undefined when calling getHistoricalVolume.');\n }\n\n const queryParameters: any = {};\n\n if (requestParameters.timeframe !== undefined) {\n queryParameters['timeframe'] = requestParameters.timeframe;\n }\n\n if (requestParameters.startTime !== undefined) {\n queryParameters['start_time'] = requestParameters.startTime;\n }\n\n if (requestParameters.endTime !== undefined) {\n queryParameters['end_time'] = requestParameters.endTime;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/pools/{address}/volume/history`.replace(`{${\"address\"}}`, encodeURIComponent(String(requestParameters.address))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TimeseriesResponseVolumeHistoryResponseFromJSON(jsonValue));\n }\n\n /**\n * Returns historical volume for a pool aggregated into time buckets **Notes** - If both `start_time` and `end_time` are provided, the result covers the range `[start_time, end_time]` - If only one of `start_time` or `end_time` is provided, the missing bound is inferred using the selected `timeframe` - If neither is provided, a default range is used based on `timeframe`\n * Historical Volume\n */\n async getHistoricalVolume(requestParameters: GetHistoricalVolumeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TimeseriesResponseVolumeHistoryResponse> {\n const response = await this.getHistoricalVolumeRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Returns OHLCV candles for a single pool over a time range **Notes** - If both `start_time` and `end_time` are provided, candles are returned in the range `[start_time, end_time]` - If only one of `start_time` or `end_time` is provided, the missing bound is inferred using the selected `timeframe` - If neither is provided, a default range is used based on `timeframe`\n * OHLCV\n */\n async getOHLCVRaw(requestParameters: GetOHLCVRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TimeseriesResponseOHLCVResponse>> {\n if (requestParameters.address === null || requestParameters.address === undefined) {\n throw new runtime.RequiredError('address','Required parameter requestParameters.address was null or undefined when calling getOHLCV.');\n }\n\n const queryParameters: any = {};\n\n if (requestParameters.timeframe !== undefined) {\n queryParameters['timeframe'] = requestParameters.timeframe;\n }\n\n if (requestParameters.startTime !== undefined) {\n queryParameters['start_time'] = requestParameters.startTime;\n }\n\n if (requestParameters.endTime !== undefined) {\n queryParameters['end_time'] = requestParameters.endTime;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/pools/{address}/ohlcv`.replace(`{${\"address\"}}`, encodeURIComponent(String(requestParameters.address))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => TimeseriesResponseOHLCVResponseFromJSON(jsonValue));\n }\n\n /**\n * Returns OHLCV candles for a single pool over a time range **Notes** - If both `start_time` and `end_time` are provided, candles are returned in the range `[start_time, end_time]` - If only one of `start_time` or `end_time` is provided, the missing bound is inferred using the selected `timeframe` - If neither is provided, a default range is used based on `timeframe`\n * OHLCV\n */\n async getOHLCV(requestParameters: GetOHLCVRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TimeseriesResponseOHLCVResponse> {\n const response = await this.getOHLCVRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Returns metadata and current state for a single pool\n * Pool\n */\n async getPoolRaw(requestParameters: GetPoolRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PoolResponse>> {\n if (requestParameters.address === null || requestParameters.address === undefined) {\n throw new runtime.RequiredError('address','Required parameter requestParameters.address was null or undefined when calling getPool.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/pools/{address}`.replace(`{${\"address\"}}`, encodeURIComponent(String(requestParameters.address))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PoolResponseFromJSON(jsonValue));\n }\n\n /**\n * Returns metadata and current state for a single pool\n * Pool\n */\n async getPool(requestParameters: GetPoolRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PoolResponse> {\n const response = await this.getPoolRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Returns a paginated list of pools\n * Pools\n */\n async getPoolsRaw(requestParameters: GetPoolsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GetPools200Response>> {\n const queryParameters: any = {};\n\n if (requestParameters.page !== undefined) {\n queryParameters['page'] = requestParameters.page;\n }\n\n if (requestParameters.pageSize !== undefined) {\n queryParameters['page_size'] = requestParameters.pageSize;\n }\n\n if (requestParameters.query !== undefined) {\n queryParameters['query'] = requestParameters.query;\n }\n\n if (requestParameters.sortBy !== undefined) {\n queryParameters['sort_by'] = requestParameters.sortBy;\n }\n\n if (requestParameters.filterBy !== undefined) {\n queryParameters['filter_by'] = requestParameters.filterBy;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/pools`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => GetPools200ResponseFromJSON(jsonValue));\n }\n\n /**\n * Returns a paginated list of pools\n * Pools\n */\n async getPools(requestParameters: GetPoolsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GetPools200Response> {\n const response = await this.getPoolsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n GetOpenPortfolioResponse,\n GetOpenPortfolioSort,\n GetPortfolioResponse,\n PortfolioTotalResponse,\n SortDirection,\n} from '../models/index';\nimport {\n GetOpenPortfolioResponseFromJSON,\n GetOpenPortfolioResponseToJSON,\n GetOpenPortfolioSortFromJSON,\n GetOpenPortfolioSortToJSON,\n GetPortfolioResponseFromJSON,\n GetPortfolioResponseToJSON,\n PortfolioTotalResponseFromJSON,\n PortfolioTotalResponseToJSON,\n SortDirectionFromJSON,\n SortDirectionToJSON,\n} from '../models/index';\n\nexport interface GetPortfolioTotalRequest {\n user: string;\n}\n\nexport interface GetUserOpenPortfolioRequest {\n user: string;\n page?: number;\n pageSize?: number;\n sortDirection?: SortDirection;\n sortBy?: GetOpenPortfolioSort;\n}\n\nexport interface GetUserPortfolioRequest {\n user: string;\n page?: number;\n pageSize?: number;\n daysBack?: number;\n}\n\n/**\n * \n */\nexport class PortfolioApi extends runtime.BaseAPI {\n\n /**\n * Returns the all-time total PnL in USD and percentage change across all user\\'s pools. This aggregates data from all closed positions across the entire portfolio. # Arguments * `user` - The wallet address of the user # Returns * `200` - The user\\'s total portfolio PnL * `400` - Invalid user address or query parameters\n * Get total portfolio PnL across all pools\n */\n async getPortfolioTotalRaw(requestParameters: GetPortfolioTotalRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PortfolioTotalResponse>> {\n if (requestParameters.user === null || requestParameters.user === undefined) {\n throw new runtime.RequiredError('user','Required parameter requestParameters.user was null or undefined when calling getPortfolioTotal.');\n }\n\n const queryParameters: any = {};\n\n if (requestParameters.user !== undefined) {\n queryParameters['user'] = requestParameters.user;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/portfolio/total`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => PortfolioTotalResponseFromJSON(jsonValue));\n }\n\n /**\n * Returns the all-time total PnL in USD and percentage change across all user\\'s pools. This aggregates data from all closed positions across the entire portfolio. # Arguments * `user` - The wallet address of the user # Returns * `200` - The user\\'s total portfolio PnL * `400` - Invalid user address or query parameters\n * Get total portfolio PnL across all pools\n */\n async getPortfolioTotal(requestParameters: GetPortfolioTotalRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PortfolioTotalResponse> {\n const response = await this.getPortfolioTotalRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Returns a paginated list of pools where the user has open (active) positions. The response includes: - Pool metadata (address, bin step, base fee, token symbols, icons) - Current balances and unclaimed fees in USD and SOL - Pool metrics (TVL, 24h volume, fee/TVL ratio) - List of open position addresses for each pool - Aggregated total metrics across all pools (balances, unclaimed fees, PnL) in USD and SOL - SOL price used for conversion (omitted if unavailable) Results can be sorted by various metrics and support pagination. # Arguments * `user` - The wallet address of the user * `page` - Page number for pagination (default: 1, minimum: 1) * `page_size` - Number of pools per page (default: 20, maximum: 50) * `sort_by` - Field to sort by: `current_balances`, `unclaimed_fee`, `pool_tvl`, `pool_volume_24h`, or `fee_per_tvl_24h` (default: `current_balances`) * `sort_direction` - Sort direction: `asc` or `desc` (default: `desc`) # Returns * `200` - The user\\'s open portfolio with pool metadata, balances, and total metrics * `400` - Invalid user address or query parameters\n * Get user portfolio with all pools containing open positions\n */\n async getUserOpenPortfolioRaw(requestParameters: GetUserOpenPortfolioRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GetOpenPortfolioResponse>> {\n if (requestParameters.user === null || requestParameters.user === undefined) {\n throw new runtime.RequiredError('user','Required parameter requestParameters.user was null or undefined when calling getUserOpenPortfolio.');\n }\n\n const queryParameters: any = {};\n\n if (requestParameters.user !== undefined) {\n queryParameters['user'] = requestParameters.user;\n }\n\n if (requestParameters.page !== undefined) {\n queryParameters['page'] = requestParameters.page;\n }\n\n if (requestParameters.pageSize !== undefined) {\n queryParameters['page_size'] = requestParameters.pageSize;\n }\n\n if (requestParameters.sortDirection !== undefined) {\n queryParameters['sort_direction'] = requestParameters.sortDirection;\n }\n\n if (requestParameters.sortBy !== undefined) {\n queryParameters['sort_by'] = requestParameters.sortBy;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/portfolio/open`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => GetOpenPortfolioResponseFromJSON(jsonValue));\n }\n\n /**\n * Returns a paginated list of pools where the user has open (active) positions. The response includes: - Pool metadata (address, bin step, base fee, token symbols, icons) - Current balances and unclaimed fees in USD and SOL - Pool metrics (TVL, 24h volume, fee/TVL ratio) - List of open position addresses for each pool - Aggregated total metrics across all pools (balances, unclaimed fees, PnL) in USD and SOL - SOL price used for conversion (omitted if unavailable) Results can be sorted by various metrics and support pagination. # Arguments * `user` - The wallet address of the user * `page` - Page number for pagination (default: 1, minimum: 1) * `page_size` - Number of pools per page (default: 20, maximum: 50) * `sort_by` - Field to sort by: `current_balances`, `unclaimed_fee`, `pool_tvl`, `pool_volume_24h`, or `fee_per_tvl_24h` (default: `current_balances`) * `sort_direction` - Sort direction: `asc` or `desc` (default: `desc`) # Returns * `200` - The user\\'s open portfolio with pool metadata, balances, and total metrics * `400` - Invalid user address or query parameters\n * Get user portfolio with all pools containing open positions\n */\n async getUserOpenPortfolio(requestParameters: GetUserOpenPortfolioRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GetOpenPortfolioResponse> {\n const response = await this.getUserOpenPortfolioRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Returns a paginated list of pools where the user has closed positions, sorted by most recent activity (last_closed_at DESC). The response includes: - Pool metadata (address, token symbols, icons, fees) - Aggregated PnL data (deposits, withdrawals, fees, total PnL) - Per-token breakdowns (X and Y) For detailed position history within each pool, call the /positions/{pool_address}/pnl endpoint. # Arguments * `user` - The wallet address of the user * `page` - Page number for pagination (default: 1) * `page_size` - Number of pools per page (default: 120, max: 365) * `days_back` - Only include pools with positions closed within this many days (default: 90) # Returns * `200` - The user\\'s portfolio with pool metadata and aggregated PnL * `400` - Invalid user address or query parameters\n * Get user portfolio with all pools containing closed positions\n */\n async getUserPortfolioRaw(requestParameters: GetUserPortfolioRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GetPortfolioResponse>> {\n if (requestParameters.user === null || requestParameters.user === undefined) {\n throw new runtime.RequiredError('user','Required parameter requestParameters.user was null or undefined when calling getUserPortfolio.');\n }\n\n const queryParameters: any = {};\n\n if (requestParameters.user !== undefined) {\n queryParameters['user'] = requestParameters.user;\n }\n\n if (requestParameters.page !== undefined) {\n queryParameters['page'] = requestParameters.page;\n }\n\n if (requestParameters.pageSize !== undefined) {\n queryParameters['page_size'] = requestParameters.pageSize;\n }\n\n if (requestParameters.daysBack !== undefined) {\n queryParameters['days_back'] = requestParameters.daysBack;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/portfolio`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => GetPortfolioResponseFromJSON(jsonValue));\n }\n\n /**\n * Returns a paginated list of pools where the user has closed positions, sorted by most recent activity (last_closed_at DESC). The response includes: - Pool metadata (address, token symbols, icons, fees) - Aggregated PnL data (deposits, withdrawals, fees, total PnL) - Per-token breakdowns (X and Y) For detailed position history within each pool, call the /positions/{pool_address}/pnl endpoint. # Arguments * `user` - The wallet address of the user * `page` - Page number for pagination (default: 1) * `page_size` - Number of pools per page (default: 120, max: 365) * `days_back` - Only include pools with positions closed within this many days (default: 90) # Returns * `200` - The user\\'s portfolio with pool metadata and aggregated PnL * `400` - Invalid user address or query parameters\n * Get user portfolio with all pools containing closed positions\n */\n async getUserPortfolio(requestParameters: GetUserPortfolioRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GetPortfolioResponse> {\n const response = await this.getUserPortfolioRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n GetPoolPositionPnLResponse,\n GetPositionHistoricalEventsResponse,\n PositionEventOrderDirection,\n PositionEventType,\n PositionStatus,\n} from '../models/index';\nimport {\n GetPoolPositionPnLResponseFromJSON,\n GetPoolPositionPnLResponseToJSON,\n GetPositionHistoricalEventsResponseFromJSON,\n GetPositionHistoricalEventsResponseToJSON,\n PositionEventOrderDirectionFromJSON,\n PositionEventOrderDirectionToJSON,\n PositionEventTypeFromJSON,\n PositionEventTypeToJSON,\n PositionStatusFromJSON,\n PositionStatusToJSON,\n} from '../models/index';\n\nexport interface GetPoolPositionPnlRequest {\n poolAddress: string;\n user: string;\n status?: PositionStatus;\n page?: number;\n pageSize?: number;\n}\n\nexport interface GetPositionHistoricalEventsRequest {\n address: string;\n eventType?: PositionEventType | null;\n orderDirection?: PositionEventOrderDirection | null;\n}\n\n/**\n * \n */\nexport class PositionsApi extends runtime.BaseAPI {\n\n /**\n * Returns positions for a specific pool and user with calculated PnL values. Includes SOL-denominated amounts when SOL price is available (omitted otherwise). Results can be filtered by status (open/closed) and are paginated. # Arguments * `pool_address` - The address of the pool * `user` - The user address * `status` - Filter by status: \\\"open\\\", \\\"closed\\\", or omit for all (default: all) * `page` - Page number starting from 1 (default: 1) # Returns * `200` - Paginated list of positions with PnL data in USD and SOL\n * Get position PnL data (open and closed positions with on-the-fly calculation)\n */\n async getPoolPositionPnlRaw(requestParameters: GetPoolPositionPnlRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GetPoolPositionPnLResponse>> {\n if (requestParameters.poolAddress === null || requestParameters.poolAddress === undefined) {\n throw new runtime.RequiredError('poolAddress','Required parameter requestParameters.poolAddress was null or undefined when calling getPoolPositionPnl.');\n }\n\n if (requestParameters.user === null || requestParameters.user === undefined) {\n throw new runtime.RequiredError('user','Required parameter requestParameters.user was null or undefined when calling getPoolPositionPnl.');\n }\n\n const queryParameters: any = {};\n\n if (requestParameters.user !== undefined) {\n queryParameters['user'] = requestParameters.user;\n }\n\n if (requestParameters.status !== undefined) {\n queryParameters['status'] = requestParameters.status;\n }\n\n if (requestParameters.page !== undefined) {\n queryParameters['page'] = requestParameters.page;\n }\n\n if (requestParameters.pageSize !== undefined) {\n queryParameters['page_size'] = requestParameters.pageSize;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/positions/{pool_address}/pnl`.replace(`{${\"pool_address\"}}`, encodeURIComponent(String(requestParameters.poolAddress))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => GetPoolPositionPnLResponseFromJSON(jsonValue));\n }\n\n /**\n * Returns positions for a specific pool and user with calculated PnL values. Includes SOL-denominated amounts when SOL price is available (omitted otherwise). Results can be filtered by status (open/closed) and are paginated. # Arguments * `pool_address` - The address of the pool * `user` - The user address * `status` - Filter by status: \\\"open\\\", \\\"closed\\\", or omit for all (default: all) * `page` - Page number starting from 1 (default: 1) # Returns * `200` - Paginated list of positions with PnL data in USD and SOL\n * Get position PnL data (open and closed positions with on-the-fly calculation)\n */\n async getPoolPositionPnl(requestParameters: GetPoolPositionPnlRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GetPoolPositionPnLResponse> {\n const response = await this.getPoolPositionPnlRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * This endpoint returns the historical actions for a position. # Arguments * `address` - The address of the position # Returns * `200` - The historical actions for the position\n * Get the historical events for a position\n */\n async getPositionHistoricalEventsRaw(requestParameters: GetPositionHistoricalEventsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GetPositionHistoricalEventsResponse>> {\n if (requestParameters.address === null || requestParameters.address === undefined) {\n throw new runtime.RequiredError('address','Required parameter requestParameters.address was null or undefined when calling getPositionHistoricalEvents.');\n }\n\n const queryParameters: any = {};\n\n if (requestParameters.eventType !== undefined) {\n queryParameters['event_type'] = requestParameters.eventType;\n }\n\n if (requestParameters.orderDirection !== undefined) {\n queryParameters['order_direction'] = requestParameters.orderDirection;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/positions/{address}/historical`.replace(`{${\"address\"}}`, encodeURIComponent(String(requestParameters.address))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => GetPositionHistoricalEventsResponseFromJSON(jsonValue));\n }\n\n /**\n * This endpoint returns the historical actions for a position. # Arguments * `address` - The address of the position # Returns * `200` - The historical actions for the position\n * Get the historical events for a position\n */\n async getPositionHistoricalEvents(requestParameters: GetPositionHistoricalEventsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GetPositionHistoricalEventsResponse> {\n const response = await this.getPositionHistoricalEventsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ErrorResponse,\n ProtocolMetricsResponse,\n} from '../models/index';\nimport {\n ErrorResponseFromJSON,\n ErrorResponseToJSON,\n ProtocolMetricsResponseFromJSON,\n ProtocolMetricsResponseToJSON,\n} from '../models/index';\n\n/**\n * \n */\nexport class StatsApi extends runtime.BaseAPI {\n\n /**\n * Returns aggregated protocol-level metrics across all pools\n * Protocol Overview\n */\n async getProtocolOverviewRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ProtocolMetricsResponse>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/stats/protocol_metrics`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ProtocolMetricsResponseFromJSON(jsonValue));\n }\n\n /**\n * Returns aggregated protocol-level metrics across all pools\n * Protocol Overview\n */\n async getProtocolOverview(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ProtocolMetricsResponse> {\n const response = await this.getProtocolOverviewRaw(initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * DLMM API\n * Indexed DLMM data for pools, portfolios, positions, limit orders, wallets, and protocol stats.\n *\n * The version of the OpenAPI document: 0.1.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ErrorResponse,\n GetWalletTotalClaimsResponse,\n} from '../models/index';\nimport {\n ErrorResponseFromJSON,\n ErrorResponseToJSON,\n GetWalletTotalClaimsResponseFromJSON,\n GetWalletTotalClaimsResponseToJSON,\n} from '../models/index';\n\nexport interface GetWalletPoolTotalClaimsRequest {\n wallet: string;\n poolAddress: string;\n}\n\n/**\n * \n */\nexport class WalletsApi extends runtime.BaseAPI {\n\n /**\n * Returns combined total claimed fees and rewards for a wallet in a specific pool\n * Get Wallet Pool Total Claims\n */\n async getWalletPoolTotalClaimsRaw(requestParameters: GetWalletPoolTotalClaimsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GetWalletTotalClaimsResponse>> {\n if (requestParameters.wallet === null || requestParameters.wallet === undefined) {\n throw new runtime.RequiredError('wallet','Required parameter requestParameters.wallet was null or undefined when calling getWalletPoolTotalClaims.');\n }\n\n if (requestParameters.poolAddress === null || requestParameters.poolAddress === undefined) {\n throw new runtime.RequiredError('poolAddress','Required parameter requestParameters.poolAddress was null or undefined when calling getWalletPoolTotalClaims.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/wallets/{wallet}/pools/{pool_address}/total_claims`.replace(`{${\"wallet\"}}`, encodeURIComponent(String(requestParameters.wallet))).replace(`{${\"pool_address\"}}`, encodeURIComponent(String(requestParameters.poolAddress))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => GetWalletTotalClaimsResponseFromJSON(jsonValue));\n }\n\n /**\n * Returns combined total claimed fees and rewards for a wallet in a specific pool\n * Get Wallet Pool Total Claims\n */\n async getWalletPoolTotalClaims(requestParameters: GetWalletPoolTotalClaimsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GetWalletTotalClaimsResponse> {\n const response = await this.getWalletPoolTotalClaimsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","import {\n LimitOrdersApi,\n PoolsApi,\n PortfolioApi,\n PositionsApi,\n StatsApi,\n WalletsApi,\n} from \"../../generated/ts/dlmm/apis\";\nimport { Configuration } from \"../../generated/ts/dlmm/runtime\";\nimport { type ApiClientOptions, resolveBaseUrl } from \"./config\";\n\nexport type DlmmApiOptions = ApiClientOptions;\n\nexport class DlmmApi {\n public readonly limitOrders: LimitOrdersApi;\n public readonly pools: PoolsApi;\n public readonly portfolio: PortfolioApi;\n public readonly positions: PositionsApi;\n public readonly stats: StatsApi;\n public readonly wallets: WalletsApi;\n\n public constructor(options: DlmmApiOptions = {}) {\n const configuration = new Configuration({\n basePath: resolveBaseUrl(options, \"https://dlmm.datapi.meteora.ag\"),\n fetchApi: options.fetch,\n headers: options.headers,\n });\n\n this.limitOrders = new LimitOrdersApi(configuration);\n this.pools = new PoolsApi(configuration);\n this.portfolio = new PortfolioApi(configuration);\n this.positions = new PositionsApi(configuration);\n this.stats = new StatsApi(configuration);\n this.wallets = new WalletsApi(configuration);\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Vault Keeper API\n * API for Vault Keeper - A DeFi vault management system that monitors and optimizes vault strategies across multiple protocols\n *\n * The version of the OpenAPI document: 0.6.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport const BASE_PATH = \"https://merv2-api.meteora.ag\".replace(/\\/+$/, \"\");\n\nexport interface ConfigurationParameters {\n basePath?: string; // override base path\n fetchApi?: FetchAPI; // override for fetch implementation\n middleware?: Middleware[]; // middleware to apply before/after fetch requests\n queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings\n username?: string; // parameter for basic security\n password?: string; // parameter for basic security\n apiKey?: string | Promise<string> | ((name: string) => string | Promise<string>); // parameter for apiKey security\n accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string | Promise<string>); // parameter for oauth2 security\n headers?: HTTPHeaders; //header params we want to use on every request\n credentials?: RequestCredentials; //value for the credentials param we want to use on each request\n}\n\nexport class Configuration {\n constructor(private configuration: ConfigurationParameters = {}) {}\n\n set config(configuration: Configuration) {\n this.configuration = configuration;\n }\n\n get basePath(): string {\n return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH;\n }\n\n get fetchApi(): FetchAPI | undefined {\n return this.configuration.fetchApi;\n }\n\n get middleware(): Middleware[] {\n return this.configuration.middleware || [];\n }\n\n get queryParamsStringify(): (params: HTTPQuery) => string {\n return this.configuration.queryParamsStringify || querystring;\n }\n\n get username(): string | undefined {\n return this.configuration.username;\n }\n\n get password(): string | undefined {\n return this.configuration.password;\n }\n\n get apiKey(): ((name: string) => string | Promise<string>) | undefined {\n const apiKey = this.configuration.apiKey;\n if (apiKey) {\n return typeof apiKey === 'function' ? apiKey : () => apiKey;\n }\n return undefined;\n }\n\n get accessToken(): ((name?: string, scopes?: string[]) => string | Promise<string>) | undefined {\n const accessToken = this.configuration.accessToken;\n if (accessToken) {\n return typeof accessToken === 'function' ? accessToken : async () => accessToken;\n }\n return undefined;\n }\n\n get headers(): HTTPHeaders | undefined {\n return this.configuration.headers;\n }\n\n get credentials(): RequestCredentials | undefined {\n return this.configuration.credentials;\n }\n}\n\nexport const DefaultConfig = new Configuration();\n\n/**\n * This is the base class for all generated API classes.\n */\nexport class BaseAPI {\n\n private static readonly jsonRegex = new RegExp('^(:?application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(:?;.*)?$', 'i');\n private middleware: Middleware[];\n\n constructor(protected configuration = DefaultConfig) {\n this.middleware = configuration.middleware;\n }\n\n withMiddleware<T extends BaseAPI>(this: T, ...middlewares: Middleware[]) {\n const next = this.clone<T>();\n next.middleware = next.middleware.concat(...middlewares);\n return next;\n }\n\n withPreMiddleware<T extends BaseAPI>(this: T, ...preMiddlewares: Array<Middleware['pre']>) {\n const middlewares = preMiddlewares.map((pre) => ({ pre }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n withPostMiddleware<T extends BaseAPI>(this: T, ...postMiddlewares: Array<Middleware['post']>) {\n const middlewares = postMiddlewares.map((post) => ({ post }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n /**\n * Check if the given MIME is a JSON MIME.\n * JSON MIME examples:\n * application/json\n * application/json; charset=UTF8\n * APPLICATION/JSON\n * application/vnd.company+json\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\n * @return True if the given MIME is JSON, false otherwise.\n */\n protected isJsonMime(mime: string | null | undefined): boolean {\n if (!mime) {\n return false;\n }\n return BaseAPI.jsonRegex.test(mime);\n }\n\n protected async request(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction): Promise<Response> {\n const { url, init } = await this.createFetchParams(context, initOverrides);\n const response = await this.fetchApi(url, init);\n if (response && (response.status >= 200 && response.status < 300)) {\n return response;\n }\n throw new ResponseError(response, 'Response returned an error code');\n }\n\n private async createFetchParams(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction) {\n let url = this.configuration.basePath + context.path;\n if (context.query !== undefined && Object.keys(context.query).length !== 0) {\n // only add the querystring to the URL if there are query parameters.\n // this is done to avoid urls ending with a \"?\" character which buggy webservers\n // do not handle correctly sometimes.\n url += '?' + this.configuration.queryParamsStringify(context.query);\n }\n\n const headers = Object.assign({}, this.configuration.headers, context.headers);\n Object.keys(headers).forEach(key => headers[key] === undefined ? delete headers[key] : {});\n\n const initOverrideFn =\n typeof initOverrides === \"function\"\n ? initOverrides\n : async () => initOverrides;\n\n const initParams = {\n method: context.method,\n headers,\n body: context.body,\n credentials: this.configuration.credentials,\n };\n\n const overriddenInit: RequestInit = {\n ...initParams,\n ...(await initOverrideFn({\n init: initParams,\n context,\n }))\n };\n\n let body: any;\n if (isFormData(overriddenInit.body)\n || (overriddenInit.body instanceof URLSearchParams)\n || isBlob(overriddenInit.body)) {\n body = overriddenInit.body;\n } else if (this.isJsonMime(headers['Content-Type'])) {\n body = JSON.stringify(overriddenInit.body);\n } else {\n body = overriddenInit.body;\n }\n\n const init: RequestInit = {\n ...overriddenInit,\n body\n };\n\n return { url, init };\n }\n\n private fetchApi = async (url: string, init: RequestInit) => {\n let fetchParams = { url, init };\n for (const middleware of this.middleware) {\n if (middleware.pre) {\n fetchParams = await middleware.pre({\n fetch: this.fetchApi,\n ...fetchParams,\n }) || fetchParams;\n }\n }\n let response: Response | undefined = undefined;\n try {\n response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init);\n } catch (e) {\n for (const middleware of this.middleware) {\n if (middleware.onError) {\n response = await middleware.onError({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n error: e,\n response: response ? response.clone() : undefined,\n }) || response;\n }\n }\n if (response === undefined) {\n if (e instanceof Error) {\n throw new FetchError(e, 'The request failed and the interceptors did not return an alternative response');\n } else {\n throw e;\n }\n }\n }\n for (const middleware of this.middleware) {\n if (middleware.post) {\n response = await middleware.post({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n response: response.clone(),\n }) || response;\n }\n }\n return response;\n }\n\n /**\n * Create a shallow clone of `this` by constructing a new instance\n * and then shallow cloning data members.\n */\n private clone<T extends BaseAPI>(this: T): T {\n const constructor = this.constructor as any;\n const next = new constructor(this.configuration);\n next.middleware = this.middleware.slice();\n return next;\n }\n};\n\nfunction isBlob(value: any): value is Blob {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n\nfunction isFormData(value: any): value is FormData {\n return typeof FormData !== \"undefined\" && value instanceof FormData;\n}\n\nexport class ResponseError extends Error {\n override name: \"ResponseError\" = \"ResponseError\";\n constructor(public response: Response, msg?: string) {\n super(msg);\n }\n}\n\nexport class FetchError extends Error {\n override name: \"FetchError\" = \"FetchError\";\n constructor(public cause: Error, msg?: string) {\n super(msg);\n }\n}\n\nexport class RequiredError extends Error {\n override name: \"RequiredError\" = \"RequiredError\";\n constructor(public field: string, msg?: string) {\n super(msg);\n }\n}\n\nexport const COLLECTION_FORMATS = {\n csv: \",\",\n ssv: \" \",\n tsv: \"\\t\",\n pipes: \"|\",\n};\n\nexport type FetchAPI = WindowOrWorkerGlobalScope['fetch'];\n\nexport type Json = any;\nexport type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD';\nexport type HTTPHeaders = { [key: string]: string };\nexport type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery };\nexport type HTTPBody = Json | FormData | URLSearchParams;\nexport type HTTPRequestInit = { headers?: HTTPHeaders; method: HTTPMethod; credentials?: RequestCredentials; body?: HTTPBody };\nexport type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';\n\nexport type InitOverrideFunction = (requestContext: { init: HTTPRequestInit, context: RequestOpts }) => Promise<RequestInit>\n\nexport interface FetchParams {\n url: string;\n init: RequestInit;\n}\n\nexport interface RequestOpts {\n path: string;\n method: HTTPMethod;\n headers: HTTPHeaders;\n query?: HTTPQuery;\n body?: HTTPBody;\n}\n\nexport function exists(json: any, key: string) {\n const value = json[key];\n return value !== null && value !== undefined;\n}\n\nexport function querystring(params: HTTPQuery, prefix: string = ''): string {\n return Object.keys(params)\n .map(key => querystringSingleKey(key, params[key], prefix))\n .filter(part => part.length > 0)\n .join('&');\n}\n\nfunction querystringSingleKey(key: string, value: string | number | null | undefined | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery, keyPrefix: string = ''): string {\n const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key);\n if (value instanceof Array) {\n const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue)))\n .join(`&${encodeURIComponent(fullKey)}=`);\n return `${encodeURIComponent(fullKey)}=${multiValue}`;\n }\n if (value instanceof Set) {\n const valueAsArray = Array.from(value);\n return querystringSingleKey(key, valueAsArray, keyPrefix);\n }\n if (value instanceof Date) {\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`;\n }\n if (value instanceof Object) {\n return querystring(value as HTTPQuery, fullKey);\n }\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`;\n}\n\nexport function mapValues(data: any, fn: (item: any) => any) {\n return Object.keys(data).reduce(\n (acc, key) => ({ ...acc, [key]: fn(data[key]) }),\n {}\n );\n}\n\nexport function canConsumeForm(consumes: Consume[]): boolean {\n for (const consume of consumes) {\n if ('multipart/form-data' === consume.contentType) {\n return true;\n }\n }\n return false;\n}\n\nexport interface Consume {\n contentType: string;\n}\n\nexport interface RequestContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n}\n\nexport interface ResponseContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n response: Response;\n}\n\nexport interface ErrorContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n error: unknown;\n response?: Response;\n}\n\nexport interface Middleware {\n pre?(context: RequestContext): Promise<FetchParams | void>;\n post?(context: ResponseContext): Promise<Response | void>;\n onError?(context: ErrorContext): Promise<Response | void>;\n}\n\nexport interface ApiResponse<T> {\n raw: Response;\n value(): Promise<T>;\n}\n\nexport interface ResponseTransformer<T> {\n (json: any): T;\n}\n\nexport class JSONApiResponse<T> {\n constructor(public raw: Response, private transformer: ResponseTransformer<T> = (jsonValue: any) => jsonValue) {}\n\n async value(): Promise<T> {\n return this.transformer(await this.raw.json());\n }\n}\n\nexport class VoidApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<void> {\n return undefined;\n }\n}\n\nexport class BlobApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<Blob> {\n return await this.raw.blob();\n };\n}\n\nexport class TextApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<string> {\n return await this.raw.text();\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Vault Keeper API\n * API for Vault Keeper - A DeFi vault management system that monitors and optimizes vault strategies across multiple protocols\n *\n * The version of the OpenAPI document: 0.6.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * APY information for a specific protocol strategy\n * @export\n * @interface ProtocolApy\n */\nexport interface ProtocolApy {\n /**\n * Human-readable strategy name\n * @type {string}\n * @memberof ProtocolApy\n */\n strategyName: string;\n /**\n * Strategy address\n * @type {string}\n * @memberof ProtocolApy\n */\n strategy: string;\n /**\n * APY percentage (e.g., 5.0 for 5%)\n * @type {number}\n * @memberof ProtocolApy\n */\n apy: number;\n}\n\n/**\n * Check if a given object implements the ProtocolApy interface.\n */\nexport function instanceOfProtocolApy(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"strategyName\" in value;\n isInstance = isInstance && \"strategy\" in value;\n isInstance = isInstance && \"apy\" in value;\n\n return isInstance;\n}\n\nexport function ProtocolApyFromJSON(json: any): ProtocolApy {\n return ProtocolApyFromJSONTyped(json, false);\n}\n\nexport function ProtocolApyFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProtocolApy {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'strategyName': json['strategy_name'],\n 'strategy': json['strategy'],\n 'apy': json['apy'],\n };\n}\n\nexport function ProtocolApyToJSON(value?: ProtocolApy | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'strategy_name': value.strategyName,\n 'strategy': value.strategy,\n 'apy': value.apy,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Vault Keeper API\n * API for Vault Keeper - A DeFi vault management system that monitors and optimizes vault strategies across multiple protocols\n *\n * The version of the OpenAPI document: 0.6.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { ProtocolApy } from './ProtocolApy';\nimport {\n ProtocolApyFromJSON,\n ProtocolApyFromJSONTyped,\n ProtocolApyToJSON,\n} from './ProtocolApy';\n\n/**\n * APY state information for different time periods\n * @export\n * @interface ApyState\n */\nexport interface ApyState {\n /**\n * Most recent APY calculations for each strategy\n * @type {Array<ProtocolApy>}\n * @memberof ApyState\n */\n closestApy: Array<ProtocolApy>;\n /**\n * Moving average APY calculations for each strategy\n * @type {Array<ProtocolApy>}\n * @memberof ApyState\n */\n averageApy: Array<ProtocolApy>;\n /**\n * Long-term APY calculations for each strategy\n * @type {Array<ProtocolApy>}\n * @memberof ApyState\n */\n longApy: Array<ProtocolApy>;\n}\n\n/**\n * Check if a given object implements the ApyState interface.\n */\nexport function instanceOfApyState(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"closestApy\" in value;\n isInstance = isInstance && \"averageApy\" in value;\n isInstance = isInstance && \"longApy\" in value;\n\n return isInstance;\n}\n\nexport function ApyStateFromJSON(json: any): ApyState {\n return ApyStateFromJSONTyped(json, false);\n}\n\nexport function ApyStateFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApyState {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'closestApy': ((json['closest_apy'] as Array<any>).map(ProtocolApyFromJSON)),\n 'averageApy': ((json['average_apy'] as Array<any>).map(ProtocolApyFromJSON)),\n 'longApy': ((json['long_apy'] as Array<any>).map(ProtocolApyFromJSON)),\n };\n}\n\nexport function ApyStateToJSON(value?: ApyState | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'closest_apy': ((value.closestApy as Array<any>).map(ProtocolApyToJSON)),\n 'average_apy': ((value.averageApy as Array<any>).map(ProtocolApyToJSON)),\n 'long_apy': ((value.longApy as Array<any>).map(ProtocolApyToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Vault Keeper API\n * API for Vault Keeper - A DeFi vault management system that monitors and optimizes vault strategies across multiple protocols\n *\n * The version of the OpenAPI document: 0.6.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * Information about a vault strategy\n * @export\n * @interface StrategyInfo\n */\nexport interface StrategyInfo {\n /**\n * Strategy public key address\n * @type {string}\n * @memberof StrategyInfo\n */\n pubkey: string;\n /**\n * Reserve address associated with the strategy\n * @type {string}\n * @memberof StrategyInfo\n */\n reserve: string;\n /**\n * Type of strategy (e.g., Solend, Kamino, MarginFi)\n * @type {string}\n * @memberof StrategyInfo\n */\n strategyType: StrategyInfoStrategyTypeEnum;\n /**\n * Human-readable strategy name\n * @type {string}\n * @memberof StrategyInfo\n */\n strategyName: string;\n /**\n * Current liquidity in this strategy\n * @type {number}\n * @memberof StrategyInfo\n */\n liquidity: number;\n /**\n * Maximum allocation percentage for this strategy\n * @type {number}\n * @memberof StrategyInfo\n */\n maxAllocation: number;\n /**\n * Whether this strategy is isolated from optimization\n * @type {boolean}\n * @memberof StrategyInfo\n */\n isolated: boolean;\n /**\n * Whether this strategy is currently disabled\n * @type {boolean}\n * @memberof StrategyInfo\n */\n disabled: boolean;\n /**\n * Safe utilization threshold percentage\n * @type {number}\n * @memberof StrategyInfo\n */\n safeUtilizationThreshold: number;\n}\n\n\n/**\n * @export\n */\nexport const StrategyInfoStrategyTypeEnum = {\n Solend: 'Solend',\n Kamino: 'Kamino',\n MarginFi: 'MarginFi',\n Unknown: 'Unknown'\n} as const;\nexport type StrategyInfoStrategyTypeEnum = typeof StrategyInfoStrategyTypeEnum[keyof typeof StrategyInfoStrategyTypeEnum];\n\n\n/**\n * Check if a given object implements the StrategyInfo interface.\n */\nexport function instanceOfStrategyInfo(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"pubkey\" in value;\n isInstance = isInstance && \"reserve\" in value;\n isInstance = isInstance && \"strategyType\" in value;\n isInstance = isInstance && \"strategyName\" in value;\n isInstance = isInstance && \"liquidity\" in value;\n isInstance = isInstance && \"maxAllocation\" in value;\n isInstance = isInstance && \"isolated\" in value;\n isInstance = isInstance && \"disabled\" in value;\n isInstance = isInstance && \"safeUtilizationThreshold\" in value;\n\n return isInstance;\n}\n\nexport function StrategyInfoFromJSON(json: any): StrategyInfo {\n return StrategyInfoFromJSONTyped(json, false);\n}\n\nexport function StrategyInfoFromJSONTyped(json: any, ignoreDiscriminator: boolean): StrategyInfo {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'pubkey': json['pubkey'],\n 'reserve': json['reserve'],\n 'strategyType': json['strategy_type'],\n 'strategyName': json['strategy_name'],\n 'liquidity': json['liquidity'],\n 'maxAllocation': json['max_allocation'],\n 'isolated': json['isolated'],\n 'disabled': json['disabled'],\n 'safeUtilizationThreshold': json['safe_utilization_threshold'],\n };\n}\n\nexport function StrategyInfoToJSON(value?: StrategyInfo | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'pubkey': value.pubkey,\n 'reserve': value.reserve,\n 'strategy_type': value.strategyType,\n 'strategy_name': value.strategyName,\n 'liquidity': value.liquidity,\n 'max_allocation': value.maxAllocation,\n 'isolated': value.isolated,\n 'disabled': value.disabled,\n 'safe_utilization_threshold': value.safeUtilizationThreshold,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Vault Keeper API\n * API for Vault Keeper - A DeFi vault management system that monitors and optimizes vault strategies across multiple protocols\n *\n * The version of the OpenAPI document: 0.6.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * Vault address information (legacy API)\n * @export\n * @interface VaultAddress\n */\nexport interface VaultAddress {\n /**\n * Token symbol\n * @type {string}\n * @memberof VaultAddress\n */\n symbol: string;\n /**\n * Vault public key address\n * @type {string}\n * @memberof VaultAddress\n */\n vaultAddress: string;\n /**\n * LP token mint address\n * @type {string}\n * @memberof VaultAddress\n */\n lpMintAddress: string;\n /**\n * Fee collection address\n * @type {string}\n * @memberof VaultAddress\n */\n feeAddress: string;\n}\n\n/**\n * Check if a given object implements the VaultAddress interface.\n */\nexport function instanceOfVaultAddress(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"symbol\" in value;\n isInstance = isInstance && \"vaultAddress\" in value;\n isInstance = isInstance && \"lpMintAddress\" in value;\n isInstance = isInstance && \"feeAddress\" in value;\n\n return isInstance;\n}\n\nexport function VaultAddressFromJSON(json: any): VaultAddress {\n return VaultAddressFromJSONTyped(json, false);\n}\n\nexport function VaultAddressFromJSONTyped(json: any, ignoreDiscriminator: boolean): VaultAddress {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'symbol': json['symbol'],\n 'vaultAddress': json['vault_address'],\n 'lpMintAddress': json['lp_mint_address'],\n 'feeAddress': json['fee_address'],\n };\n}\n\nexport function VaultAddressToJSON(value?: VaultAddress | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'symbol': value.symbol,\n 'vault_address': value.vaultAddress,\n 'lp_mint_address': value.lpMintAddress,\n 'fee_address': value.feeAddress,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Vault Keeper API\n * API for Vault Keeper - A DeFi vault management system that monitors and optimizes vault strategies across multiple protocols\n *\n * The version of the OpenAPI document: 0.6.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { StrategyInfo } from './StrategyInfo';\nimport {\n StrategyInfoFromJSON,\n StrategyInfoFromJSONTyped,\n StrategyInfoToJSON,\n} from './StrategyInfo';\n\n/**\n * Complete state information for a vault\n * @export\n * @interface VaultState\n */\nexport interface VaultState {\n /**\n * Token symbol (e.g., USDC, SOL)\n * @type {string}\n * @memberof VaultState\n */\n symbol: string;\n /**\n * Token mint address\n * @type {string}\n * @memberof VaultState\n */\n tokenAddress: string;\n /**\n * Vault public key address\n * @type {string}\n * @memberof VaultState\n */\n pubkey: string;\n /**\n * Whether the vault is currently being monitored\n * @type {boolean}\n * @memberof VaultState\n */\n isMonitoring: boolean;\n /**\n * Display order of the vault\n * @type {number}\n * @memberof VaultState\n */\n vaultOrder: number;\n /**\n * Current USD exchange rate for the token\n * @type {number}\n * @memberof VaultState\n */\n usdRate: number;\n /**\n * Most recent APY calculation\n * @type {number}\n * @memberof VaultState\n */\n closestApy: number;\n /**\n * Moving average APY\n * @type {number}\n * @memberof VaultState\n */\n averageApy: number;\n /**\n * Long-term APY calculation\n * @type {number}\n * @memberof VaultState\n */\n longApy: number;\n /**\n * Total amount earned by the vault\n * @type {number}\n * @memberof VaultState\n */\n earnedAmount: number;\n /**\n * Current virtual price as decimal string\n * @type {string}\n * @memberof VaultState\n */\n virtualPrice: string;\n /**\n * Whether the vault is enabled (1) or disabled (0)\n * @type {number}\n * @memberof VaultState\n */\n enabled: number;\n /**\n * LP token mint address\n * @type {string}\n * @memberof VaultState\n */\n lpMint: string;\n /**\n * Fee collection account public key\n * @type {string}\n * @memberof VaultState\n */\n feePubkey: string;\n /**\n * Total amount deposited in the vault\n * @type {number}\n * @memberof VaultState\n */\n totalAmount: number;\n /**\n * Total amount including accumulated profits\n * @type {number}\n * @memberof VaultState\n */\n totalAmountWithProfit: number;\n /**\n * Current token amount in the vault\n * @type {number}\n * @memberof VaultState\n */\n tokenAmount: number;\n /**\n * Accumulated fee amount\n * @type {number}\n * @memberof VaultState\n */\n feeAmount: number;\n /**\n * Total LP token supply\n * @type {number}\n * @memberof VaultState\n */\n lpSupply: number;\n /**\n * Earned amount in USD\n * @type {number}\n * @memberof VaultState\n */\n earnedUsdAmount: number;\n /**\n * List of strategies used by this vault\n * @type {Array<StrategyInfo>}\n * @memberof VaultState\n */\n strategies: Array<StrategyInfo>;\n /**\n * Last update timestamp\n * @type {number}\n * @memberof VaultState\n */\n timestamp: number;\n}\n\n/**\n * Check if a given object implements the VaultState interface.\n */\nexport function instanceOfVaultState(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"symbol\" in value;\n isInstance = isInstance && \"tokenAddress\" in value;\n isInstance = isInstance && \"pubkey\" in value;\n isInstance = isInstance && \"isMonitoring\" in value;\n isInstance = isInstance && \"vaultOrder\" in value;\n isInstance = isInstance && \"usdRate\" in value;\n isInstance = isInstance && \"closestApy\" in value;\n isInstance = isInstance && \"averageApy\" in value;\n isInstance = isInstance && \"longApy\" in value;\n isInstance = isInstance && \"earnedAmount\" in value;\n isInstance = isInstance && \"virtualPrice\" in value;\n isInstance = isInstance && \"enabled\" in value;\n isInstance = isInstance && \"lpMint\" in value;\n isInstance = isInstance && \"feePubkey\" in value;\n isInstance = isInstance && \"totalAmount\" in value;\n isInstance = isInstance && \"totalAmountWithProfit\" in value;\n isInstance = isInstance && \"tokenAmount\" in value;\n isInstance = isInstance && \"feeAmount\" in value;\n isInstance = isInstance && \"lpSupply\" in value;\n isInstance = isInstance && \"earnedUsdAmount\" in value;\n isInstance = isInstance && \"strategies\" in value;\n isInstance = isInstance && \"timestamp\" in value;\n\n return isInstance;\n}\n\nexport function VaultStateFromJSON(json: any): VaultState {\n return VaultStateFromJSONTyped(json, false);\n}\n\nexport function VaultStateFromJSONTyped(json: any, ignoreDiscriminator: boolean): VaultState {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'symbol': json['symbol'],\n 'tokenAddress': json['token_address'],\n 'pubkey': json['pubkey'],\n 'isMonitoring': json['is_monitoring'],\n 'vaultOrder': json['vault_order'],\n 'usdRate': json['usd_rate'],\n 'closestApy': json['closest_apy'],\n 'averageApy': json['average_apy'],\n 'longApy': json['long_apy'],\n 'earnedAmount': json['earned_amount'],\n 'virtualPrice': json['virtual_price'],\n 'enabled': json['enabled'],\n 'lpMint': json['lp_mint'],\n 'feePubkey': json['fee_pubkey'],\n 'totalAmount': json['total_amount'],\n 'totalAmountWithProfit': json['total_amount_with_profit'],\n 'tokenAmount': json['token_amount'],\n 'feeAmount': json['fee_amount'],\n 'lpSupply': json['lp_supply'],\n 'earnedUsdAmount': json['earned_usd_amount'],\n 'strategies': ((json['strategies'] as Array<any>).map(StrategyInfoFromJSON)),\n 'timestamp': json['timestamp'],\n };\n}\n\nexport function VaultStateToJSON(value?: VaultState | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'symbol': value.symbol,\n 'token_address': value.tokenAddress,\n 'pubkey': value.pubkey,\n 'is_monitoring': value.isMonitoring,\n 'vault_order': value.vaultOrder,\n 'usd_rate': value.usdRate,\n 'closest_apy': value.closestApy,\n 'average_apy': value.averageApy,\n 'long_apy': value.longApy,\n 'earned_amount': value.earnedAmount,\n 'virtual_price': value.virtualPrice,\n 'enabled': value.enabled,\n 'lp_mint': value.lpMint,\n 'fee_pubkey': value.feePubkey,\n 'total_amount': value.totalAmount,\n 'total_amount_with_profit': value.totalAmountWithProfit,\n 'token_amount': value.tokenAmount,\n 'fee_amount': value.feeAmount,\n 'lp_supply': value.lpSupply,\n 'earned_usd_amount': value.earnedUsdAmount,\n 'strategies': ((value.strategies as Array<any>).map(StrategyInfoToJSON)),\n 'timestamp': value.timestamp,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Vault Keeper API\n * API for Vault Keeper - A DeFi vault management system that monitors and optimizes vault strategies across multiple protocols\n *\n * The version of the OpenAPI document: 0.6.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * Virtual price data point\n * @export\n * @interface VirtualPrice\n */\nexport interface VirtualPrice {\n /**\n * Virtual price as decimal string\n * @type {string}\n * @memberof VirtualPrice\n */\n price: string;\n /**\n * Timestamp when this price was recorded\n * @type {number}\n * @memberof VirtualPrice\n */\n timestamp: number;\n}\n\n/**\n * Check if a given object implements the VirtualPrice interface.\n */\nexport function instanceOfVirtualPrice(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"price\" in value;\n isInstance = isInstance && \"timestamp\" in value;\n\n return isInstance;\n}\n\nexport function VirtualPriceFromJSON(json: any): VirtualPrice {\n return VirtualPriceFromJSONTyped(json, false);\n}\n\nexport function VirtualPriceFromJSONTyped(json: any, ignoreDiscriminator: boolean): VirtualPrice {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'price': json['price'],\n 'timestamp': json['timestamp'],\n };\n}\n\nexport function VirtualPriceToJSON(value?: VirtualPrice | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'price': value.price,\n 'timestamp': value.timestamp,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Vault Keeper API\n * API for Vault Keeper - A DeFi vault management system that monitors and optimizes vault strategies across multiple protocols\n *\n * The version of the OpenAPI document: 0.6.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n ApyState,\n} from '../models/index';\nimport {\n ApyStateFromJSON,\n ApyStateToJSON,\n} from '../models/index';\n\nexport interface GetApyStateRequest {\n tokenMint: string;\n}\n\nexport interface GetFilterApyByTimeRangeRequest {\n tokenMint: string;\n startTimestamp: string;\n endTimestamp: string;\n}\n\n/**\n * \n */\nexport class APYApi extends runtime.BaseAPI {\n\n /**\n * Returns APY (Annual Percentage Yield) information for strategies associated with a specific token mint\n * get_apy_state\n */\n async getApyStateRaw(requestParameters: GetApyStateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ApyState>> {\n if (requestParameters.tokenMint === null || requestParameters.tokenMint === undefined) {\n throw new runtime.RequiredError('tokenMint','Required parameter requestParameters.tokenMint was null or undefined when calling getApyState.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/apy_state/{token_mint}`.replace(`{${\"token_mint\"}}`, encodeURIComponent(String(requestParameters.tokenMint))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApyStateFromJSON(jsonValue));\n }\n\n /**\n * Returns APY (Annual Percentage Yield) information for strategies associated with a specific token mint\n * get_apy_state\n */\n async getApyState(requestParameters: GetApyStateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ApyState> {\n const response = await this.getApyStateRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n * Returns APY information for a specific token mint within a given time range\n * get_apy_by_time_range\n */\n async getFilterApyByTimeRangeRaw(requestParameters: GetFilterApyByTimeRangeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ApyState>> {\n if (requestParameters.tokenMint === null || requestParameters.tokenMint === undefined) {\n throw new runtime.RequiredError('tokenMint','Required parameter requestParameters.tokenMint was null or undefined when calling getFilterApyByTimeRange.');\n }\n\n if (requestParameters.startTimestamp === null || requestParameters.startTimestamp === undefined) {\n throw new runtime.RequiredError('startTimestamp','Required parameter requestParameters.startTimestamp was null or undefined when calling getFilterApyByTimeRange.');\n }\n\n if (requestParameters.endTimestamp === null || requestParameters.endTimestamp === undefined) {\n throw new runtime.RequiredError('endTimestamp','Required parameter requestParameters.endTimestamp was null or undefined when calling getFilterApyByTimeRange.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/apy_filter/{token_mint}/{start_timestamp}/{end_timestamp}`.replace(`{${\"token_mint\"}}`, encodeURIComponent(String(requestParameters.tokenMint))).replace(`{${\"start_timestamp\"}}`, encodeURIComponent(String(requestParameters.startTimestamp))).replace(`{${\"end_timestamp\"}}`, encodeURIComponent(String(requestParameters.endTimestamp))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => ApyStateFromJSON(jsonValue));\n }\n\n /**\n * Returns APY information for a specific token mint within a given time range\n * get_apy_by_time_range\n */\n async getFilterApyByTimeRange(requestParameters: GetFilterApyByTimeRangeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ApyState> {\n const response = await this.getFilterApyByTimeRangeRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Vault Keeper API\n * API for Vault Keeper - A DeFi vault management system that monitors and optimizes vault strategies across multiple protocols\n *\n * The version of the OpenAPI document: 0.6.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n VaultAddress,\n VaultState,\n} from '../models/index';\nimport {\n VaultAddressFromJSON,\n VaultAddressToJSON,\n VaultStateFromJSON,\n VaultStateToJSON,\n} from '../models/index';\n\nexport interface GetVaultStateRequest {\n tokenMint: string;\n}\n\n/**\n * \n */\nexport class VaultsApi extends runtime.BaseAPI {\n\n /**\n * Returns a list of vault addresses with their associated information\n * get_vault_addresses\n */\n async getVaultAddressesRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<VaultAddress>>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vault_addresses`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(VaultAddressFromJSON));\n }\n\n /**\n * Returns a list of vault addresses with their associated information\n * get_vault_addresses\n */\n async getVaultAddresses(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<VaultAddress>> {\n const response = await this.getVaultAddressesRaw(initOverrides);\n return await response.value();\n }\n\n /**\n * Returns detailed information about all monitored vaults including their states, strategies, and performance metrics\n * get_vault_info\n */\n async getVaultInfoRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<VaultState>>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vault_info`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(VaultStateFromJSON));\n }\n\n /**\n * Returns detailed information about all monitored vaults including their states, strategies, and performance metrics\n * get_vault_info\n */\n async getVaultInfo(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<VaultState>> {\n const response = await this.getVaultInfoRaw(initOverrides);\n return await response.value();\n }\n\n /**\n * Returns the current state of a specific vault identified by its token mint address\n * get_vault_state\n */\n async getVaultStateRaw(requestParameters: GetVaultStateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<VaultState>> {\n if (requestParameters.tokenMint === null || requestParameters.tokenMint === undefined) {\n throw new runtime.RequiredError('tokenMint','Required parameter requestParameters.tokenMint was null or undefined when calling getVaultState.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vault_state/{token_mint}`.replace(`{${\"token_mint\"}}`, encodeURIComponent(String(requestParameters.tokenMint))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => VaultStateFromJSON(jsonValue));\n }\n\n /**\n * Returns the current state of a specific vault identified by its token mint address\n * get_vault_state\n */\n async getVaultState(requestParameters: GetVaultStateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<VaultState> {\n const response = await this.getVaultStateRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Vault Keeper API\n * API for Vault Keeper - A DeFi vault management system that monitors and optimizes vault strategies across multiple protocols\n *\n * The version of the OpenAPI document: 0.6.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n VirtualPrice,\n} from '../models/index';\nimport {\n VirtualPriceFromJSON,\n VirtualPriceToJSON,\n} from '../models/index';\n\nexport interface GetVirtualPriceRequest {\n tokenMint: string;\n strategy: string;\n}\n\n/**\n * \n */\nexport class VirtualPriceApi extends runtime.BaseAPI {\n\n /**\n * Returns virtual price information for a specific strategy within a vault\n * get_virtual_price\n */\n async getVirtualPriceRaw(requestParameters: GetVirtualPriceRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<VirtualPrice>>> {\n if (requestParameters.tokenMint === null || requestParameters.tokenMint === undefined) {\n throw new runtime.RequiredError('tokenMint','Required parameter requestParameters.tokenMint was null or undefined when calling getVirtualPrice.');\n }\n\n if (requestParameters.strategy === null || requestParameters.strategy === undefined) {\n throw new runtime.RequiredError('strategy','Required parameter requestParameters.strategy was null or undefined when calling getVirtualPrice.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/virtual_price/{token_mint}/{strategy}`.replace(`{${\"token_mint\"}}`, encodeURIComponent(String(requestParameters.tokenMint))).replace(`{${\"strategy\"}}`, encodeURIComponent(String(requestParameters.strategy))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(VirtualPriceFromJSON));\n }\n\n /**\n * Returns virtual price information for a specific strategy within a vault\n * get_virtual_price\n */\n async getVirtualPrice(requestParameters: GetVirtualPriceRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<VirtualPrice>> {\n const response = await this.getVirtualPriceRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","import { APYApi, VaultsApi, VirtualPriceApi } from \"../../generated/ts/dynamic-vault/apis\";\nimport { Configuration } from \"../../generated/ts/dynamic-vault/runtime\";\nimport { type ApiClientOptions, resolveBaseUrl } from \"./config\";\n\nexport type DynamicVaultApiOptions = ApiClientOptions;\n\nexport class DynamicVaultApi {\n public readonly apy: APYApi;\n public readonly vaults: VaultsApi;\n public readonly virtualPrice: VirtualPriceApi;\n\n public constructor(options: DynamicVaultApiOptions = {}) {\n const configuration = new Configuration({\n basePath: resolveBaseUrl(options, \"https://merv2-api.meteora.ag\"),\n fetchApi: options.fetch,\n headers: options.headers,\n });\n\n this.apy = new APYApi(configuration);\n this.vaults = new VaultsApi(configuration);\n this.virtualPrice = new VirtualPriceApi(configuration);\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * stake_for_fee_keeper\n * Stake2Earn indexed read-only API for analytics, vault discovery, vault filtering, and vault detail responses.\n *\n * The version of the OpenAPI document: 0.1.1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport const BASE_PATH = \"https://stake-for-fee-api.meteora.ag\".replace(/\\/+$/, \"\");\n\nexport interface ConfigurationParameters {\n basePath?: string; // override base path\n fetchApi?: FetchAPI; // override for fetch implementation\n middleware?: Middleware[]; // middleware to apply before/after fetch requests\n queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings\n username?: string; // parameter for basic security\n password?: string; // parameter for basic security\n apiKey?: string | Promise<string> | ((name: string) => string | Promise<string>); // parameter for apiKey security\n accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string | Promise<string>); // parameter for oauth2 security\n headers?: HTTPHeaders; //header params we want to use on every request\n credentials?: RequestCredentials; //value for the credentials param we want to use on each request\n}\n\nexport class Configuration {\n constructor(private configuration: ConfigurationParameters = {}) {}\n\n set config(configuration: Configuration) {\n this.configuration = configuration;\n }\n\n get basePath(): string {\n return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH;\n }\n\n get fetchApi(): FetchAPI | undefined {\n return this.configuration.fetchApi;\n }\n\n get middleware(): Middleware[] {\n return this.configuration.middleware || [];\n }\n\n get queryParamsStringify(): (params: HTTPQuery) => string {\n return this.configuration.queryParamsStringify || querystring;\n }\n\n get username(): string | undefined {\n return this.configuration.username;\n }\n\n get password(): string | undefined {\n return this.configuration.password;\n }\n\n get apiKey(): ((name: string) => string | Promise<string>) | undefined {\n const apiKey = this.configuration.apiKey;\n if (apiKey) {\n return typeof apiKey === 'function' ? apiKey : () => apiKey;\n }\n return undefined;\n }\n\n get accessToken(): ((name?: string, scopes?: string[]) => string | Promise<string>) | undefined {\n const accessToken = this.configuration.accessToken;\n if (accessToken) {\n return typeof accessToken === 'function' ? accessToken : async () => accessToken;\n }\n return undefined;\n }\n\n get headers(): HTTPHeaders | undefined {\n return this.configuration.headers;\n }\n\n get credentials(): RequestCredentials | undefined {\n return this.configuration.credentials;\n }\n}\n\nexport const DefaultConfig = new Configuration();\n\n/**\n * This is the base class for all generated API classes.\n */\nexport class BaseAPI {\n\n private static readonly jsonRegex = new RegExp('^(:?application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(:?;.*)?$', 'i');\n private middleware: Middleware[];\n\n constructor(protected configuration = DefaultConfig) {\n this.middleware = configuration.middleware;\n }\n\n withMiddleware<T extends BaseAPI>(this: T, ...middlewares: Middleware[]) {\n const next = this.clone<T>();\n next.middleware = next.middleware.concat(...middlewares);\n return next;\n }\n\n withPreMiddleware<T extends BaseAPI>(this: T, ...preMiddlewares: Array<Middleware['pre']>) {\n const middlewares = preMiddlewares.map((pre) => ({ pre }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n withPostMiddleware<T extends BaseAPI>(this: T, ...postMiddlewares: Array<Middleware['post']>) {\n const middlewares = postMiddlewares.map((post) => ({ post }));\n return this.withMiddleware<T>(...middlewares);\n }\n\n /**\n * Check if the given MIME is a JSON MIME.\n * JSON MIME examples:\n * application/json\n * application/json; charset=UTF8\n * APPLICATION/JSON\n * application/vnd.company+json\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\n * @return True if the given MIME is JSON, false otherwise.\n */\n protected isJsonMime(mime: string | null | undefined): boolean {\n if (!mime) {\n return false;\n }\n return BaseAPI.jsonRegex.test(mime);\n }\n\n protected async request(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction): Promise<Response> {\n const { url, init } = await this.createFetchParams(context, initOverrides);\n const response = await this.fetchApi(url, init);\n if (response && (response.status >= 200 && response.status < 300)) {\n return response;\n }\n throw new ResponseError(response, 'Response returned an error code');\n }\n\n private async createFetchParams(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction) {\n let url = this.configuration.basePath + context.path;\n if (context.query !== undefined && Object.keys(context.query).length !== 0) {\n // only add the querystring to the URL if there are query parameters.\n // this is done to avoid urls ending with a \"?\" character which buggy webservers\n // do not handle correctly sometimes.\n url += '?' + this.configuration.queryParamsStringify(context.query);\n }\n\n const headers = Object.assign({}, this.configuration.headers, context.headers);\n Object.keys(headers).forEach(key => headers[key] === undefined ? delete headers[key] : {});\n\n const initOverrideFn =\n typeof initOverrides === \"function\"\n ? initOverrides\n : async () => initOverrides;\n\n const initParams = {\n method: context.method,\n headers,\n body: context.body,\n credentials: this.configuration.credentials,\n };\n\n const overriddenInit: RequestInit = {\n ...initParams,\n ...(await initOverrideFn({\n init: initParams,\n context,\n }))\n };\n\n let body: any;\n if (isFormData(overriddenInit.body)\n || (overriddenInit.body instanceof URLSearchParams)\n || isBlob(overriddenInit.body)) {\n body = overriddenInit.body;\n } else if (this.isJsonMime(headers['Content-Type'])) {\n body = JSON.stringify(overriddenInit.body);\n } else {\n body = overriddenInit.body;\n }\n\n const init: RequestInit = {\n ...overriddenInit,\n body\n };\n\n return { url, init };\n }\n\n private fetchApi = async (url: string, init: RequestInit) => {\n let fetchParams = { url, init };\n for (const middleware of this.middleware) {\n if (middleware.pre) {\n fetchParams = await middleware.pre({\n fetch: this.fetchApi,\n ...fetchParams,\n }) || fetchParams;\n }\n }\n let response: Response | undefined = undefined;\n try {\n response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init);\n } catch (e) {\n for (const middleware of this.middleware) {\n if (middleware.onError) {\n response = await middleware.onError({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n error: e,\n response: response ? response.clone() : undefined,\n }) || response;\n }\n }\n if (response === undefined) {\n if (e instanceof Error) {\n throw new FetchError(e, 'The request failed and the interceptors did not return an alternative response');\n } else {\n throw e;\n }\n }\n }\n for (const middleware of this.middleware) {\n if (middleware.post) {\n response = await middleware.post({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n response: response.clone(),\n }) || response;\n }\n }\n return response;\n }\n\n /**\n * Create a shallow clone of `this` by constructing a new instance\n * and then shallow cloning data members.\n */\n private clone<T extends BaseAPI>(this: T): T {\n const constructor = this.constructor as any;\n const next = new constructor(this.configuration);\n next.middleware = this.middleware.slice();\n return next;\n }\n};\n\nfunction isBlob(value: any): value is Blob {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n\nfunction isFormData(value: any): value is FormData {\n return typeof FormData !== \"undefined\" && value instanceof FormData;\n}\n\nexport class ResponseError extends Error {\n override name: \"ResponseError\" = \"ResponseError\";\n constructor(public response: Response, msg?: string) {\n super(msg);\n }\n}\n\nexport class FetchError extends Error {\n override name: \"FetchError\" = \"FetchError\";\n constructor(public cause: Error, msg?: string) {\n super(msg);\n }\n}\n\nexport class RequiredError extends Error {\n override name: \"RequiredError\" = \"RequiredError\";\n constructor(public field: string, msg?: string) {\n super(msg);\n }\n}\n\nexport const COLLECTION_FORMATS = {\n csv: \",\",\n ssv: \" \",\n tsv: \"\\t\",\n pipes: \"|\",\n};\n\nexport type FetchAPI = WindowOrWorkerGlobalScope['fetch'];\n\nexport type Json = any;\nexport type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD';\nexport type HTTPHeaders = { [key: string]: string };\nexport type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery };\nexport type HTTPBody = Json | FormData | URLSearchParams;\nexport type HTTPRequestInit = { headers?: HTTPHeaders; method: HTTPMethod; credentials?: RequestCredentials; body?: HTTPBody };\nexport type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';\n\nexport type InitOverrideFunction = (requestContext: { init: HTTPRequestInit, context: RequestOpts }) => Promise<RequestInit>\n\nexport interface FetchParams {\n url: string;\n init: RequestInit;\n}\n\nexport interface RequestOpts {\n path: string;\n method: HTTPMethod;\n headers: HTTPHeaders;\n query?: HTTPQuery;\n body?: HTTPBody;\n}\n\nexport function exists(json: any, key: string) {\n const value = json[key];\n return value !== null && value !== undefined;\n}\n\nexport function querystring(params: HTTPQuery, prefix: string = ''): string {\n return Object.keys(params)\n .map(key => querystringSingleKey(key, params[key], prefix))\n .filter(part => part.length > 0)\n .join('&');\n}\n\nfunction querystringSingleKey(key: string, value: string | number | null | undefined | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery, keyPrefix: string = ''): string {\n const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key);\n if (value instanceof Array) {\n const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue)))\n .join(`&${encodeURIComponent(fullKey)}=`);\n return `${encodeURIComponent(fullKey)}=${multiValue}`;\n }\n if (value instanceof Set) {\n const valueAsArray = Array.from(value);\n return querystringSingleKey(key, valueAsArray, keyPrefix);\n }\n if (value instanceof Date) {\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`;\n }\n if (value instanceof Object) {\n return querystring(value as HTTPQuery, fullKey);\n }\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`;\n}\n\nexport function mapValues(data: any, fn: (item: any) => any) {\n return Object.keys(data).reduce(\n (acc, key) => ({ ...acc, [key]: fn(data[key]) }),\n {}\n );\n}\n\nexport function canConsumeForm(consumes: Consume[]): boolean {\n for (const consume of consumes) {\n if ('multipart/form-data' === consume.contentType) {\n return true;\n }\n }\n return false;\n}\n\nexport interface Consume {\n contentType: string;\n}\n\nexport interface RequestContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n}\n\nexport interface ResponseContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n response: Response;\n}\n\nexport interface ErrorContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n error: unknown;\n response?: Response;\n}\n\nexport interface Middleware {\n pre?(context: RequestContext): Promise<FetchParams | void>;\n post?(context: ResponseContext): Promise<Response | void>;\n onError?(context: ErrorContext): Promise<Response | void>;\n}\n\nexport interface ApiResponse<T> {\n raw: Response;\n value(): Promise<T>;\n}\n\nexport interface ResponseTransformer<T> {\n (json: any): T;\n}\n\nexport class JSONApiResponse<T> {\n constructor(public raw: Response, private transformer: ResponseTransformer<T> = (jsonValue: any) => jsonValue) {}\n\n async value(): Promise<T> {\n return this.transformer(await this.raw.json());\n }\n}\n\nexport class VoidApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<void> {\n return undefined;\n }\n}\n\nexport class BlobApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<Blob> {\n return await this.raw.blob();\n };\n}\n\nexport class TextApiResponse {\n constructor(public raw: Response) {}\n\n async value(): Promise<string> {\n return await this.raw.text();\n };\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * stake_for_fee_keeper\n * Stake2Earn indexed read-only API for analytics, vault discovery, vault filtering, and vault detail responses.\n *\n * The version of the OpenAPI document: 0.1.1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface AggregateAnalyticInfo\n */\nexport interface AggregateAnalyticInfo {\n /**\n * \n * @type {number}\n * @memberof AggregateAnalyticInfo\n */\n totalFeeVaults: number;\n /**\n * \n * @type {number}\n * @memberof AggregateAnalyticInfo\n */\n totalStakedAmountUsd: number;\n}\n\n/**\n * Check if a given object implements the AggregateAnalyticInfo interface.\n */\nexport function instanceOfAggregateAnalyticInfo(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"totalFeeVaults\" in value;\n isInstance = isInstance && \"totalStakedAmountUsd\" in value;\n\n return isInstance;\n}\n\nexport function AggregateAnalyticInfoFromJSON(json: any): AggregateAnalyticInfo {\n return AggregateAnalyticInfoFromJSONTyped(json, false);\n}\n\nexport function AggregateAnalyticInfoFromJSONTyped(json: any, ignoreDiscriminator: boolean): AggregateAnalyticInfo {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'totalFeeVaults': json['total_fee_vaults'],\n 'totalStakedAmountUsd': json['total_staked_amount_usd'],\n };\n}\n\nexport function AggregateAnalyticInfoToJSON(value?: AggregateAnalyticInfo | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'total_fee_vaults': value.totalFeeVaults,\n 'total_staked_amount_usd': value.totalStakedAmountUsd,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * stake_for_fee_keeper\n * Stake2Earn indexed read-only API for analytics, vault discovery, vault filtering, and vault detail responses.\n *\n * The version of the OpenAPI document: 0.1.1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface VaultFlags\n */\nexport interface VaultFlags {\n /**\n * \n * @type {number}\n * @memberof VaultFlags\n */\n tvlUsdThreshold: number;\n /**\n * \n * @type {boolean}\n * @memberof VaultFlags\n */\n tvlUsdThresholdReached: boolean;\n}\n\n/**\n * Check if a given object implements the VaultFlags interface.\n */\nexport function instanceOfVaultFlags(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"tvlUsdThreshold\" in value;\n isInstance = isInstance && \"tvlUsdThresholdReached\" in value;\n\n return isInstance;\n}\n\nexport function VaultFlagsFromJSON(json: any): VaultFlags {\n return VaultFlagsFromJSONTyped(json, false);\n}\n\nexport function VaultFlagsFromJSONTyped(json: any, ignoreDiscriminator: boolean): VaultFlags {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'tvlUsdThreshold': json['tvl_usd_threshold'],\n 'tvlUsdThresholdReached': json['tvl_usd_threshold_reached'],\n };\n}\n\nexport function VaultFlagsToJSON(value?: VaultFlags | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'tvl_usd_threshold': value.tvlUsdThreshold,\n 'tvl_usd_threshold_reached': value.tvlUsdThresholdReached,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * stake_for_fee_keeper\n * Stake2Earn indexed read-only API for analytics, vault discovery, vault filtering, and vault detail responses.\n *\n * The version of the OpenAPI document: 0.1.1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { VaultFlags } from './VaultFlags';\nimport {\n VaultFlagsFromJSON,\n VaultFlagsFromJSONTyped,\n VaultFlagsToJSON,\n} from './VaultFlags';\n\n/**\n * \n * @export\n * @interface Vault\n */\nexport interface Vault {\n /**\n * \n * @type {string}\n * @memberof Vault\n */\n vaultAddress: string;\n /**\n * \n * @type {string}\n * @memberof Vault\n */\n poolAddress: string;\n /**\n * \n * @type {string}\n * @memberof Vault\n */\n tokenAMint: string;\n /**\n * \n * @type {string}\n * @memberof Vault\n */\n tokenBMint: string;\n /**\n * \n * @type {string}\n * @memberof Vault\n */\n stakeMint: string;\n /**\n * \n * @type {string}\n * @memberof Vault\n */\n tokenASymbol: string;\n /**\n * \n * @type {string}\n * @memberof Vault\n */\n tokenBSymbol: string;\n /**\n * \n * @type {number}\n * @memberof Vault\n */\n totalStakedAmount: number;\n /**\n * \n * @type {number}\n * @memberof Vault\n */\n totalStakedAmountUsd: number;\n /**\n * Vault total reward in USD value for token A.\n * @type {number}\n * @memberof Vault\n */\n currentRewardTokenAUsd: number;\n /**\n * Vault total reward in USD value for token B.\n * @type {number}\n * @memberof Vault\n */\n currentRewardTokenBUsd: number;\n /**\n * Vault total reward in USD value.\n * @type {number}\n * @memberof Vault\n */\n currentRewardUsd: number;\n /**\n * Vault estimated daily reward based on current reward USD.\n * @type {number}\n * @memberof Vault\n */\n dailyRewardUsd: number;\n /**\n * \n * @type {number}\n * @memberof Vault\n */\n createdAtSlot: number;\n /**\n * \n * @type {number}\n * @memberof Vault\n */\n createdAtSlotTimestamp: number;\n /**\n * \n * @type {string}\n * @memberof Vault\n */\n createdAtTxSig: string;\n /**\n * \n * @type {number}\n * @memberof Vault\n */\n secondsToFullUnlock: number;\n /**\n * \n * @type {number}\n * @memberof Vault\n */\n startFeeDistributeTimestamp: number;\n /**\n * \n * @type {number}\n * @memberof Vault\n */\n marketcap: number;\n /**\n * \n * @type {VaultFlags}\n * @memberof Vault\n */\n flags: VaultFlags;\n}\n\n/**\n * Check if a given object implements the Vault interface.\n */\nexport function instanceOfVault(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"vaultAddress\" in value;\n isInstance = isInstance && \"poolAddress\" in value;\n isInstance = isInstance && \"tokenAMint\" in value;\n isInstance = isInstance && \"tokenBMint\" in value;\n isInstance = isInstance && \"stakeMint\" in value;\n isInstance = isInstance && \"tokenASymbol\" in value;\n isInstance = isInstance && \"tokenBSymbol\" in value;\n isInstance = isInstance && \"totalStakedAmount\" in value;\n isInstance = isInstance && \"totalStakedAmountUsd\" in value;\n isInstance = isInstance && \"currentRewardTokenAUsd\" in value;\n isInstance = isInstance && \"currentRewardTokenBUsd\" in value;\n isInstance = isInstance && \"currentRewardUsd\" in value;\n isInstance = isInstance && \"dailyRewardUsd\" in value;\n isInstance = isInstance && \"createdAtSlot\" in value;\n isInstance = isInstance && \"createdAtSlotTimestamp\" in value;\n isInstance = isInstance && \"createdAtTxSig\" in value;\n isInstance = isInstance && \"secondsToFullUnlock\" in value;\n isInstance = isInstance && \"startFeeDistributeTimestamp\" in value;\n isInstance = isInstance && \"marketcap\" in value;\n isInstance = isInstance && \"flags\" in value;\n\n return isInstance;\n}\n\nexport function VaultFromJSON(json: any): Vault {\n return VaultFromJSONTyped(json, false);\n}\n\nexport function VaultFromJSONTyped(json: any, ignoreDiscriminator: boolean): Vault {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'vaultAddress': json['vault_address'],\n 'poolAddress': json['pool_address'],\n 'tokenAMint': json['token_a_mint'],\n 'tokenBMint': json['token_b_mint'],\n 'stakeMint': json['stake_mint'],\n 'tokenASymbol': json['token_a_symbol'],\n 'tokenBSymbol': json['token_b_symbol'],\n 'totalStakedAmount': json['total_staked_amount'],\n 'totalStakedAmountUsd': json['total_staked_amount_usd'],\n 'currentRewardTokenAUsd': json['current_reward_token_a_usd'],\n 'currentRewardTokenBUsd': json['current_reward_token_b_usd'],\n 'currentRewardUsd': json['current_reward_usd'],\n 'dailyRewardUsd': json['daily_reward_usd'],\n 'createdAtSlot': json['created_at_slot'],\n 'createdAtSlotTimestamp': json['created_at_slot_timestamp'],\n 'createdAtTxSig': json['created_at_tx_sig'],\n 'secondsToFullUnlock': json['seconds_to_full_unlock'],\n 'startFeeDistributeTimestamp': json['start_fee_distribute_timestamp'],\n 'marketcap': json['marketcap'],\n 'flags': VaultFlagsFromJSON(json['flags']),\n };\n}\n\nexport function VaultToJSON(value?: Vault | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'vault_address': value.vaultAddress,\n 'pool_address': value.poolAddress,\n 'token_a_mint': value.tokenAMint,\n 'token_b_mint': value.tokenBMint,\n 'stake_mint': value.stakeMint,\n 'token_a_symbol': value.tokenASymbol,\n 'token_b_symbol': value.tokenBSymbol,\n 'total_staked_amount': value.totalStakedAmount,\n 'total_staked_amount_usd': value.totalStakedAmountUsd,\n 'current_reward_token_a_usd': value.currentRewardTokenAUsd,\n 'current_reward_token_b_usd': value.currentRewardTokenBUsd,\n 'current_reward_usd': value.currentRewardUsd,\n 'daily_reward_usd': value.dailyRewardUsd,\n 'created_at_slot': value.createdAtSlot,\n 'created_at_slot_timestamp': value.createdAtSlotTimestamp,\n 'created_at_tx_sig': value.createdAtTxSig,\n 'seconds_to_full_unlock': value.secondsToFullUnlock,\n 'start_fee_distribute_timestamp': value.startFeeDistributeTimestamp,\n 'marketcap': value.marketcap,\n 'flags': VaultFlagsToJSON(value.flags),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * stake_for_fee_keeper\n * Stake2Earn indexed read-only API for analytics, vault discovery, vault filtering, and vault detail responses.\n *\n * The version of the OpenAPI document: 0.1.1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\n/**\n * \n * @export\n * @interface VaultTopListHolder\n */\nexport interface VaultTopListHolder {\n /**\n * \n * @type {string}\n * @memberof VaultTopListHolder\n */\n owner: string;\n /**\n * \n * @type {number}\n * @memberof VaultTopListHolder\n */\n stakedAmount: number;\n /**\n * \n * @type {number}\n * @memberof VaultTopListHolder\n */\n tokenAAccumulatedReward: number;\n /**\n * \n * @type {number}\n * @memberof VaultTopListHolder\n */\n tokenBAccumulatedReward: number;\n /**\n * \n * @type {number}\n * @memberof VaultTopListHolder\n */\n tokenAAccumulatedRewardUsd: number;\n /**\n * \n * @type {number}\n * @memberof VaultTopListHolder\n */\n tokenBAccumulatedRewardUsd: number;\n /**\n * \n * @type {number}\n * @memberof VaultTopListHolder\n */\n dailyRewardUsd: number;\n}\n\n/**\n * Check if a given object implements the VaultTopListHolder interface.\n */\nexport function instanceOfVaultTopListHolder(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"owner\" in value;\n isInstance = isInstance && \"stakedAmount\" in value;\n isInstance = isInstance && \"tokenAAccumulatedReward\" in value;\n isInstance = isInstance && \"tokenBAccumulatedReward\" in value;\n isInstance = isInstance && \"tokenAAccumulatedRewardUsd\" in value;\n isInstance = isInstance && \"tokenBAccumulatedRewardUsd\" in value;\n isInstance = isInstance && \"dailyRewardUsd\" in value;\n\n return isInstance;\n}\n\nexport function VaultTopListHolderFromJSON(json: any): VaultTopListHolder {\n return VaultTopListHolderFromJSONTyped(json, false);\n}\n\nexport function VaultTopListHolderFromJSONTyped(json: any, ignoreDiscriminator: boolean): VaultTopListHolder {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'owner': json['owner'],\n 'stakedAmount': json['staked_amount'],\n 'tokenAAccumulatedReward': json['token_a_accumulated_reward'],\n 'tokenBAccumulatedReward': json['token_b_accumulated_reward'],\n 'tokenAAccumulatedRewardUsd': json['token_a_accumulated_reward_usd'],\n 'tokenBAccumulatedRewardUsd': json['token_b_accumulated_reward_usd'],\n 'dailyRewardUsd': json['daily_reward_usd'],\n };\n}\n\nexport function VaultTopListHolderToJSON(value?: VaultTopListHolder | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'owner': value.owner,\n 'staked_amount': value.stakedAmount,\n 'token_a_accumulated_reward': value.tokenAAccumulatedReward,\n 'token_b_accumulated_reward': value.tokenBAccumulatedReward,\n 'token_a_accumulated_reward_usd': value.tokenAAccumulatedRewardUsd,\n 'token_b_accumulated_reward_usd': value.tokenBAccumulatedRewardUsd,\n 'daily_reward_usd': value.dailyRewardUsd,\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * stake_for_fee_keeper\n * Stake2Earn indexed read-only API for analytics, vault discovery, vault filtering, and vault detail responses.\n *\n * The version of the OpenAPI document: 0.1.1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { VaultFlags } from './VaultFlags';\nimport {\n VaultFlagsFromJSON,\n VaultFlagsFromJSONTyped,\n VaultFlagsToJSON,\n} from './VaultFlags';\nimport type { VaultTopListHolder } from './VaultTopListHolder';\nimport {\n VaultTopListHolderFromJSON,\n VaultTopListHolderFromJSONTyped,\n VaultTopListHolderToJSON,\n} from './VaultTopListHolder';\n\n/**\n * \n * @export\n * @interface VaultDetailWithLeaderboard\n */\nexport interface VaultDetailWithLeaderboard {\n /**\n * \n * @type {string}\n * @memberof VaultDetailWithLeaderboard\n */\n vaultAddress: string;\n /**\n * \n * @type {string}\n * @memberof VaultDetailWithLeaderboard\n */\n poolAddress: string;\n /**\n * \n * @type {string}\n * @memberof VaultDetailWithLeaderboard\n */\n tokenAMint: string;\n /**\n * \n * @type {string}\n * @memberof VaultDetailWithLeaderboard\n */\n tokenBMint: string;\n /**\n * \n * @type {string}\n * @memberof VaultDetailWithLeaderboard\n */\n stakeMint: string;\n /**\n * \n * @type {string}\n * @memberof VaultDetailWithLeaderboard\n */\n tokenASymbol: string;\n /**\n * \n * @type {string}\n * @memberof VaultDetailWithLeaderboard\n */\n tokenBSymbol: string;\n /**\n * \n * @type {number}\n * @memberof VaultDetailWithLeaderboard\n */\n totalStakedAmount: number;\n /**\n * \n * @type {number}\n * @memberof VaultDetailWithLeaderboard\n */\n totalStakedAmountUsd: number;\n /**\n * Vault total reward in USD value for token A.\n * @type {number}\n * @memberof VaultDetailWithLeaderboard\n */\n currentRewardTokenAUsd: number;\n /**\n * Vault total reward in USD value for token B.\n * @type {number}\n * @memberof VaultDetailWithLeaderboard\n */\n currentRewardTokenBUsd: number;\n /**\n * Vault total reward in USD value.\n * @type {number}\n * @memberof VaultDetailWithLeaderboard\n */\n currentRewardUsd: number;\n /**\n * Vault estimated daily reward based on current reward USD.\n * @type {number}\n * @memberof VaultDetailWithLeaderboard\n */\n dailyRewardUsd: number;\n /**\n * \n * @type {number}\n * @memberof VaultDetailWithLeaderboard\n */\n createdAtSlot: number;\n /**\n * \n * @type {number}\n * @memberof VaultDetailWithLeaderboard\n */\n createdAtSlotTimestamp: number;\n /**\n * \n * @type {string}\n * @memberof VaultDetailWithLeaderboard\n */\n createdAtTxSig: string;\n /**\n * \n * @type {number}\n * @memberof VaultDetailWithLeaderboard\n */\n secondsToFullUnlock: number;\n /**\n * \n * @type {number}\n * @memberof VaultDetailWithLeaderboard\n */\n startFeeDistributeTimestamp: number;\n /**\n * \n * @type {number}\n * @memberof VaultDetailWithLeaderboard\n */\n marketcap: number;\n /**\n * \n * @type {VaultFlags}\n * @memberof VaultDetailWithLeaderboard\n */\n flags: VaultFlags;\n /**\n * \n * @type {Array<VaultTopListHolder>}\n * @memberof VaultDetailWithLeaderboard\n */\n topLists: Array<VaultTopListHolder>;\n}\n\n/**\n * Check if a given object implements the VaultDetailWithLeaderboard interface.\n */\nexport function instanceOfVaultDetailWithLeaderboard(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"vaultAddress\" in value;\n isInstance = isInstance && \"poolAddress\" in value;\n isInstance = isInstance && \"tokenAMint\" in value;\n isInstance = isInstance && \"tokenBMint\" in value;\n isInstance = isInstance && \"stakeMint\" in value;\n isInstance = isInstance && \"tokenASymbol\" in value;\n isInstance = isInstance && \"tokenBSymbol\" in value;\n isInstance = isInstance && \"totalStakedAmount\" in value;\n isInstance = isInstance && \"totalStakedAmountUsd\" in value;\n isInstance = isInstance && \"currentRewardTokenAUsd\" in value;\n isInstance = isInstance && \"currentRewardTokenBUsd\" in value;\n isInstance = isInstance && \"currentRewardUsd\" in value;\n isInstance = isInstance && \"dailyRewardUsd\" in value;\n isInstance = isInstance && \"createdAtSlot\" in value;\n isInstance = isInstance && \"createdAtSlotTimestamp\" in value;\n isInstance = isInstance && \"createdAtTxSig\" in value;\n isInstance = isInstance && \"secondsToFullUnlock\" in value;\n isInstance = isInstance && \"startFeeDistributeTimestamp\" in value;\n isInstance = isInstance && \"marketcap\" in value;\n isInstance = isInstance && \"flags\" in value;\n isInstance = isInstance && \"topLists\" in value;\n\n return isInstance;\n}\n\nexport function VaultDetailWithLeaderboardFromJSON(json: any): VaultDetailWithLeaderboard {\n return VaultDetailWithLeaderboardFromJSONTyped(json, false);\n}\n\nexport function VaultDetailWithLeaderboardFromJSONTyped(json: any, ignoreDiscriminator: boolean): VaultDetailWithLeaderboard {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'vaultAddress': json['vault_address'],\n 'poolAddress': json['pool_address'],\n 'tokenAMint': json['token_a_mint'],\n 'tokenBMint': json['token_b_mint'],\n 'stakeMint': json['stake_mint'],\n 'tokenASymbol': json['token_a_symbol'],\n 'tokenBSymbol': json['token_b_symbol'],\n 'totalStakedAmount': json['total_staked_amount'],\n 'totalStakedAmountUsd': json['total_staked_amount_usd'],\n 'currentRewardTokenAUsd': json['current_reward_token_a_usd'],\n 'currentRewardTokenBUsd': json['current_reward_token_b_usd'],\n 'currentRewardUsd': json['current_reward_usd'],\n 'dailyRewardUsd': json['daily_reward_usd'],\n 'createdAtSlot': json['created_at_slot'],\n 'createdAtSlotTimestamp': json['created_at_slot_timestamp'],\n 'createdAtTxSig': json['created_at_tx_sig'],\n 'secondsToFullUnlock': json['seconds_to_full_unlock'],\n 'startFeeDistributeTimestamp': json['start_fee_distribute_timestamp'],\n 'marketcap': json['marketcap'],\n 'flags': VaultFlagsFromJSON(json['flags']),\n 'topLists': ((json['top_lists'] as Array<any>).map(VaultTopListHolderFromJSON)),\n };\n}\n\nexport function VaultDetailWithLeaderboardToJSON(value?: VaultDetailWithLeaderboard | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'vault_address': value.vaultAddress,\n 'pool_address': value.poolAddress,\n 'token_a_mint': value.tokenAMint,\n 'token_b_mint': value.tokenBMint,\n 'stake_mint': value.stakeMint,\n 'token_a_symbol': value.tokenASymbol,\n 'token_b_symbol': value.tokenBSymbol,\n 'total_staked_amount': value.totalStakedAmount,\n 'total_staked_amount_usd': value.totalStakedAmountUsd,\n 'current_reward_token_a_usd': value.currentRewardTokenAUsd,\n 'current_reward_token_b_usd': value.currentRewardTokenBUsd,\n 'current_reward_usd': value.currentRewardUsd,\n 'daily_reward_usd': value.dailyRewardUsd,\n 'created_at_slot': value.createdAtSlot,\n 'created_at_slot_timestamp': value.createdAtSlotTimestamp,\n 'created_at_tx_sig': value.createdAtTxSig,\n 'seconds_to_full_unlock': value.secondsToFullUnlock,\n 'start_fee_distribute_timestamp': value.startFeeDistributeTimestamp,\n 'marketcap': value.marketcap,\n 'flags': VaultFlagsToJSON(value.flags),\n 'top_lists': ((value.topLists as Array<any>).map(VaultTopListHolderToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * stake_for_fee_keeper\n * Stake2Earn indexed read-only API for analytics, vault discovery, vault filtering, and vault detail responses.\n *\n * The version of the OpenAPI document: 0.1.1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { exists, mapValues } from '../runtime';\nimport type { Vault } from './Vault';\nimport {\n VaultFromJSON,\n VaultFromJSONTyped,\n VaultToJSON,\n} from './Vault';\n\n/**\n * \n * @export\n * @interface VaultsResponse\n */\nexport interface VaultsResponse {\n /**\n * \n * @type {number}\n * @memberof VaultsResponse\n */\n total: number;\n /**\n * \n * @type {Array<Vault>}\n * @memberof VaultsResponse\n */\n data: Array<Vault>;\n}\n\n/**\n * Check if a given object implements the VaultsResponse interface.\n */\nexport function instanceOfVaultsResponse(value: object): boolean {\n let isInstance = true;\n isInstance = isInstance && \"total\" in value;\n isInstance = isInstance && \"data\" in value;\n\n return isInstance;\n}\n\nexport function VaultsResponseFromJSON(json: any): VaultsResponse {\n return VaultsResponseFromJSONTyped(json, false);\n}\n\nexport function VaultsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): VaultsResponse {\n if ((json === undefined) || (json === null)) {\n return json;\n }\n return {\n \n 'total': json['total'],\n 'data': ((json['data'] as Array<any>).map(VaultFromJSON)),\n };\n}\n\nexport function VaultsResponseToJSON(value?: VaultsResponse | null): any {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return {\n \n 'total': value.total,\n 'data': ((value.data as Array<any>).map(VaultToJSON)),\n };\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * stake_for_fee_keeper\n * Stake2Earn indexed read-only API for analytics, vault discovery, vault filtering, and vault detail responses.\n *\n * The version of the OpenAPI document: 0.1.1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n AggregateAnalyticInfo,\n} from '../models/index';\nimport {\n AggregateAnalyticInfoFromJSON,\n AggregateAnalyticInfoToJSON,\n} from '../models/index';\n\n/**\n * \n */\nexport class AnalyticsApi extends runtime.BaseAPI {\n\n /**\n */\n async getAllAnalyticsRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<AggregateAnalyticInfo>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/analytics/all`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => AggregateAnalyticInfoFromJSON(jsonValue));\n }\n\n /**\n */\n async getAllAnalytics(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AggregateAnalyticInfo> {\n const response = await this.getAllAnalyticsRaw(initOverrides);\n return await response.value();\n }\n\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * stake_for_fee_keeper\n * Stake2Earn indexed read-only API for analytics, vault discovery, vault filtering, and vault detail responses.\n *\n * The version of the OpenAPI document: 0.1.1\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport * as runtime from '../runtime';\nimport type {\n VaultDetailWithLeaderboard,\n VaultsResponse,\n} from '../models/index';\nimport {\n VaultDetailWithLeaderboardFromJSON,\n VaultDetailWithLeaderboardToJSON,\n VaultsResponseFromJSON,\n VaultsResponseToJSON,\n} from '../models/index';\n\nexport interface FilterVaultsRequest {\n poolAddress?: Array<string> | null;\n}\n\nexport interface GetOneVaultRequest {\n vaultAddress: string;\n}\n\n/**\n * \n */\nexport class VaultApi extends runtime.BaseAPI {\n\n /**\n */\n async filterVaultsRaw(requestParameters: FilterVaultsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<VaultsResponse>> {\n const queryParameters: any = {};\n\n if (requestParameters.poolAddress) {\n queryParameters['pool_address'] = requestParameters.poolAddress;\n }\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vault/filter`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => VaultsResponseFromJSON(jsonValue));\n }\n\n /**\n */\n async filterVaults(requestParameters: FilterVaultsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<VaultsResponse> {\n const response = await this.filterVaultsRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n /**\n */\n async getAllVaultsRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<VaultsResponse>> {\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vault/all`,\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => VaultsResponseFromJSON(jsonValue));\n }\n\n /**\n */\n async getAllVaults(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<VaultsResponse> {\n const response = await this.getAllVaultsRaw(initOverrides);\n return await response.value();\n }\n\n /**\n */\n async getOneVaultRaw(requestParameters: GetOneVaultRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<VaultDetailWithLeaderboard>> {\n if (requestParameters.vaultAddress === null || requestParameters.vaultAddress === undefined) {\n throw new runtime.RequiredError('vaultAddress','Required parameter requestParameters.vaultAddress was null or undefined when calling getOneVault.');\n }\n\n const queryParameters: any = {};\n\n const headerParameters: runtime.HTTPHeaders = {};\n\n const response = await this.request({\n path: `/vault/{vault_address}`.replace(`{${\"vault_address\"}}`, encodeURIComponent(String(requestParameters.vaultAddress))),\n method: 'GET',\n headers: headerParameters,\n query: queryParameters,\n }, initOverrides);\n\n return new runtime.JSONApiResponse(response, (jsonValue) => VaultDetailWithLeaderboardFromJSON(jsonValue));\n }\n\n /**\n */\n async getOneVault(requestParameters: GetOneVaultRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<VaultDetailWithLeaderboard> {\n const response = await this.getOneVaultRaw(requestParameters, initOverrides);\n return await response.value();\n }\n\n}\n","import { AnalyticsApi, VaultApi } from \"../../generated/ts/stake2earn/apis\";\nimport { Configuration } from \"../../generated/ts/stake2earn/runtime\";\nimport { type ApiClientOptions, resolveBaseUrl } from \"./config\";\n\nexport type Stake2EarnApiOptions = ApiClientOptions;\n\nexport class Stake2EarnApi {\n public readonly analytics: AnalyticsApi;\n public readonly vaults: VaultApi;\n\n public constructor(options: Stake2EarnApiOptions = {}) {\n const configuration = new Configuration({\n basePath: resolveBaseUrl(options, \"https://stake-for-fee-api.meteora.ag\"),\n fetchApi: options.fetch,\n headers: options.headers,\n });\n\n this.analytics = new AnalyticsApi(configuration);\n this.vaults = new VaultApi(configuration);\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\nexport * from './runtime';\nexport * from './apis/index';\nexport * from './models/index';\n","/* tslint:disable */\n/* eslint-disable */\nexport * from './runtime';\nexport * from './apis/index';\nexport * from './models/index';\n","/* tslint:disable */\n/* eslint-disable */\nexport * from './runtime';\nexport * from './apis/index';\nexport * from './models/index';\n","/* tslint:disable */\n/* eslint-disable */\nexport * from './runtime';\nexport * from './apis/index';\nexport * from './models/index';\n","/* tslint:disable */\n/* eslint-disable */\nexport * from './runtime';\nexport * from './apis/index';\nexport * from './models/index';\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["jsonBodySerializer","createSseClient","separatorArrayExplode","separatorArrayNoExplode","separatorObjectExplode","serializeArrayParam","serializePrimitiveParam","serializeObjectParam","PATH_PARAM_RE","defaultPathSerializer","serializeArrayParam","serializeObjectParam","serializePrimitiveParam","getUrl","getValidRequestBody","getAuthToken","createQuerySerializer","serializeArrayParam","serializeObjectParam","serializePrimitiveParam","getParseAs","checkForExistence","setAuthParams","getAuthToken","buildUrl","getUrl","mergeConfigs","mergeHeaders","headersEntries","Interceptors","createInterceptors","defaultQuerySerializer","defaultHeaders","createConfig","jsonBodySerializer","mergeConfigs","createConfig","createInterceptors","mergeHeaders","setAuthParams","buildUrl","getValidRequestBody","getParseAs","createSseClient","client","createConfig","HeyApiClient","client","HeyApiRegistry","Pools","jsonBodySerializer","createSseClient","separatorArrayExplode","separatorArrayNoExplode","separatorObjectExplode","serializeArrayParam","serializePrimitiveParam","serializeObjectParam","PATH_PARAM_RE","defaultPathSerializer","serializeArrayParam","serializeObjectParam","serializePrimitiveParam","getUrl","getValidRequestBody","getAuthToken","createQuerySerializer","serializeArrayParam","serializeObjectParam","serializePrimitiveParam","getParseAs","checkForExistence","setAuthParams","getAuthToken","buildUrl","getUrl","mergeConfigs","mergeHeaders","headersEntries","Interceptors","createInterceptors","defaultQuerySerializer","defaultHeaders","createConfig","jsonBodySerializer","createClient","mergeConfigs","createConfig","createInterceptors","mergeHeaders","setAuthParams","buildUrl","getValidRequestBody","getParseAs","createSseClient","client","createClient","createConfig","HeyApiClient","client","HeyApiRegistry","Pools","Stats","jsonBodySerializer","createSseClient","separatorArrayExplode","separatorArrayNoExplode","separatorObjectExplode","serializeArrayParam","serializePrimitiveParam","serializeObjectParam","PATH_PARAM_RE","defaultPathSerializer","serializeArrayParam","serializeObjectParam","serializePrimitiveParam","getUrl","getValidRequestBody","getAuthToken","createQuerySerializer","serializeArrayParam","serializeObjectParam","serializePrimitiveParam","getParseAs","checkForExistence","setAuthParams","getAuthToken","buildUrl","getUrl","mergeConfigs","mergeHeaders","headersEntries","Interceptors","createInterceptors","defaultQuerySerializer","defaultHeaders","createConfig","jsonBodySerializer","createClient","mergeConfigs","createConfig","createInterceptors","mergeHeaders","setAuthParams","buildUrl","getValidRequestBody","getParseAs","createSseClient","client","createClient","createConfig","HeyApiClient","client","HeyApiRegistry","jsonBodySerializer","createSseClient","separatorArrayExplode","separatorArrayNoExplode","separatorObjectExplode","serializeArrayParam","serializePrimitiveParam","serializeObjectParam","PATH_PARAM_RE","defaultPathSerializer","serializeArrayParam","serializeObjectParam","serializePrimitiveParam","getUrl","getValidRequestBody","getAuthToken","createQuerySerializer","serializeArrayParam","serializeObjectParam","serializePrimitiveParam","getParseAs","checkForExistence","setAuthParams","getAuthToken","buildUrl","getUrl","mergeConfigs","mergeHeaders","headersEntries","Interceptors","createInterceptors","defaultQuerySerializer","defaultHeaders","createConfig","jsonBodySerializer","createClient","mergeConfigs","createConfig","createInterceptors","mergeHeaders","setAuthParams","buildUrl","getValidRequestBody","getParseAs","createSseClient","client","createClient","createConfig","HeyApiClient","client","HeyApiRegistry","Vaults","createClient","createClient"],"sources":["../generated/damm-v1/core/bodySerializer.gen.ts","../generated/damm-v1/core/serverSentEvents.gen.ts","../generated/damm-v1/core/pathSerializer.gen.ts","../generated/damm-v1/core/utils.gen.ts","../generated/damm-v1/core/auth.gen.ts","../generated/damm-v1/client/utils.gen.ts","../generated/damm-v1/client/client.gen.ts","../generated/damm-v1/client.gen.ts","../generated/damm-v1/sdk.gen.ts","../generated/damm-v2/core/bodySerializer.gen.ts","../generated/damm-v2/core/serverSentEvents.gen.ts","../generated/damm-v2/core/pathSerializer.gen.ts","../generated/damm-v2/core/utils.gen.ts","../generated/damm-v2/core/auth.gen.ts","../generated/damm-v2/client/utils.gen.ts","../generated/damm-v2/client/client.gen.ts","../generated/damm-v2/client.gen.ts","../generated/damm-v2/sdk.gen.ts","../generated/dlmm/core/bodySerializer.gen.ts","../generated/dlmm/core/serverSentEvents.gen.ts","../generated/dlmm/core/pathSerializer.gen.ts","../generated/dlmm/core/utils.gen.ts","../generated/dlmm/core/auth.gen.ts","../generated/dlmm/client/utils.gen.ts","../generated/dlmm/client/client.gen.ts","../generated/dlmm/client.gen.ts","../generated/dlmm/sdk.gen.ts","../generated/dynamic-vault/core/bodySerializer.gen.ts","../generated/dynamic-vault/core/serverSentEvents.gen.ts","../generated/dynamic-vault/core/pathSerializer.gen.ts","../generated/dynamic-vault/core/utils.gen.ts","../generated/dynamic-vault/core/auth.gen.ts","../generated/dynamic-vault/client/utils.gen.ts","../generated/dynamic-vault/client/client.gen.ts","../generated/dynamic-vault/client.gen.ts","../generated/dynamic-vault/sdk.gen.ts","../generated/stake2earn/core/bodySerializer.gen.ts","../generated/stake2earn/core/serverSentEvents.gen.ts","../generated/stake2earn/core/pathSerializer.gen.ts","../generated/stake2earn/core/utils.gen.ts","../generated/stake2earn/core/auth.gen.ts","../generated/stake2earn/client/utils.gen.ts","../generated/stake2earn/client/client.gen.ts","../generated/stake2earn/client.gen.ts","../generated/stake2earn/sdk.gen.ts"],"sourcesContent":["// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { ArrayStyle, ObjectStyle, SerializerOptions } from './pathSerializer.gen';\n\nexport type QuerySerializer = (query: Record<string, unknown>) => string;\n\nexport type BodySerializer = (body: unknown) => unknown;\n\ntype QuerySerializerOptionsObject = {\n allowReserved?: boolean;\n array?: Partial<SerializerOptions<ArrayStyle>>;\n object?: Partial<SerializerOptions<ObjectStyle>>;\n};\n\nexport type QuerySerializerOptions = QuerySerializerOptionsObject & {\n /**\n * Per-parameter serialization overrides. When provided, these settings\n * override the global array/object settings for specific parameter names.\n */\n parameters?: Record<string, QuerySerializerOptionsObject>;\n};\n\nconst serializeFormDataPair = (data: FormData, key: string, value: unknown): void => {\n if (typeof value === 'string' || value instanceof Blob) {\n data.append(key, value);\n } else if (value instanceof Date) {\n data.append(key, value.toISOString());\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nconst serializeUrlSearchParamsPair = (data: URLSearchParams, key: string, value: unknown): void => {\n if (typeof value === 'string') {\n data.append(key, value);\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nexport const formDataBodySerializer = {\n bodySerializer: (body: unknown): FormData => {\n const data = new FormData();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeFormDataPair(data, key, v));\n } else {\n serializeFormDataPair(data, key, value);\n }\n });\n\n return data;\n },\n};\n\nexport const jsonBodySerializer = {\n bodySerializer: (body: unknown): string =>\n JSON.stringify(body, (_key, value) => (typeof value === 'bigint' ? value.toString() : value)),\n};\n\nexport const urlSearchParamsBodySerializer = {\n bodySerializer: (body: unknown): string => {\n const data = new URLSearchParams();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeUrlSearchParamsPair(data, key, v));\n } else {\n serializeUrlSearchParamsPair(data, key, value);\n }\n });\n\n return data.toString();\n },\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Config } from './types.gen';\n\nexport type ServerSentEventsOptions<TData = unknown> = Omit<RequestInit, 'method'> &\n Pick<Config, 'method' | 'responseTransformer' | 'responseValidator'> & {\n /**\n * Fetch API implementation. You can use this option to provide a custom\n * fetch instance.\n *\n * @default globalThis.fetch\n */\n fetch?: typeof fetch;\n /**\n * Implementing clients can call request interceptors inside this hook.\n */\n onRequest?: (url: string, init: RequestInit) => Promise<Request>;\n /**\n * Callback invoked when a network or parsing error occurs during streaming.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param error The error that occurred.\n */\n onSseError?: (error: unknown) => void;\n /**\n * Callback invoked when an event is streamed from the server.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param event Event streamed from the server.\n * @returns Nothing (void).\n */\n onSseEvent?: (event: StreamEvent<TData>) => void;\n serializedBody?: RequestInit['body'];\n /**\n * Default retry delay in milliseconds.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 3000\n */\n sseDefaultRetryDelay?: number;\n /**\n * Maximum number of retry attempts before giving up.\n */\n sseMaxRetryAttempts?: number;\n /**\n * Maximum retry delay in milliseconds.\n *\n * Applies only when exponential backoff is used.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 30000\n */\n sseMaxRetryDelay?: number;\n /**\n * Optional sleep function for retry backoff.\n *\n * Defaults to using `setTimeout`.\n */\n sseSleepFn?: (ms: number) => Promise<void>;\n url: string;\n };\n\nexport interface StreamEvent<TData = unknown> {\n data: TData;\n event?: string;\n id?: string;\n retry?: number;\n}\n\nexport type ServerSentEventsResult<TData = unknown, TReturn = void, TNext = unknown> = {\n stream: AsyncGenerator<\n TData extends Record<string, unknown> ? TData[keyof TData] : TData,\n TReturn,\n TNext\n >;\n};\n\nexport function createSseClient<TData = unknown>({\n onRequest,\n onSseError,\n onSseEvent,\n responseTransformer,\n responseValidator,\n sseDefaultRetryDelay,\n sseMaxRetryAttempts,\n sseMaxRetryDelay,\n sseSleepFn,\n url,\n ...options\n}: ServerSentEventsOptions): ServerSentEventsResult<TData> {\n let lastEventId: string | undefined;\n\n const sleep = sseSleepFn ?? ((ms: number) => new Promise((resolve) => setTimeout(resolve, ms)));\n\n const createStream = async function* () {\n let retryDelay: number = sseDefaultRetryDelay ?? 3000;\n let attempt = 0;\n const signal = options.signal ?? new AbortController().signal;\n\n while (true) {\n if (signal.aborted) break;\n\n attempt++;\n\n const headers =\n options.headers instanceof Headers\n ? options.headers\n : new Headers(options.headers as Record<string, string> | undefined);\n\n if (lastEventId !== undefined) {\n headers.set('Last-Event-ID', lastEventId);\n }\n\n try {\n const requestInit: RequestInit = {\n redirect: 'follow',\n ...options,\n body: options.serializedBody,\n headers,\n signal,\n };\n let request = new Request(url, requestInit);\n if (onRequest) {\n request = await onRequest(url, requestInit);\n }\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = options.fetch ?? globalThis.fetch;\n const response = await _fetch(request);\n\n if (!response.ok) throw new Error(`SSE failed: ${response.status} ${response.statusText}`);\n\n if (!response.body) throw new Error('No body in SSE response');\n\n const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();\n\n let buffer = '';\n\n const abortHandler = () => {\n try {\n reader.cancel();\n } catch {\n // noop\n }\n };\n\n signal.addEventListener('abort', abortHandler);\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += value;\n buffer = buffer.replace(/\\r\\n?/g, '\\n'); // normalize line endings\n\n const chunks = buffer.split('\\n\\n');\n buffer = chunks.pop() ?? '';\n\n for (const chunk of chunks) {\n const lines = chunk.split('\\n');\n const dataLines: Array<string> = [];\n let eventName: string | undefined;\n\n for (const line of lines) {\n if (line.startsWith('data:')) {\n dataLines.push(line.replace(/^data:\\s*/, ''));\n } else if (line.startsWith('event:')) {\n eventName = line.replace(/^event:\\s*/, '');\n } else if (line.startsWith('id:')) {\n lastEventId = line.replace(/^id:\\s*/, '');\n } else if (line.startsWith('retry:')) {\n const parsed = Number.parseInt(line.replace(/^retry:\\s*/, ''), 10);\n if (!Number.isNaN(parsed)) {\n retryDelay = parsed;\n }\n }\n }\n\n let data: unknown;\n let parsedJson = false;\n\n if (dataLines.length) {\n const rawData = dataLines.join('\\n');\n try {\n data = JSON.parse(rawData);\n parsedJson = true;\n } catch {\n data = rawData;\n }\n }\n\n if (parsedJson) {\n if (responseValidator) {\n await responseValidator(data);\n }\n\n if (responseTransformer) {\n data = await responseTransformer(data);\n }\n }\n\n onSseEvent?.({\n data,\n event: eventName,\n id: lastEventId,\n retry: retryDelay,\n });\n\n if (dataLines.length) {\n yield data as any;\n }\n }\n }\n } finally {\n signal.removeEventListener('abort', abortHandler);\n reader.releaseLock();\n }\n\n break; // exit loop on normal completion\n } catch (error) {\n // connection failed or aborted; retry after delay\n onSseError?.(error);\n\n if (sseMaxRetryAttempts !== undefined && attempt >= sseMaxRetryAttempts) {\n break; // stop after firing error\n }\n\n // exponential backoff: double retry each attempt, cap at 30s\n const backoff = Math.min(retryDelay * 2 ** (attempt - 1), sseMaxRetryDelay ?? 30000);\n await sleep(backoff);\n }\n }\n };\n\n const stream = createStream();\n\n return { stream };\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\ninterface SerializeOptions<T> extends SerializePrimitiveOptions, SerializerOptions<T> {}\n\ninterface SerializePrimitiveOptions {\n allowReserved?: boolean;\n name: string;\n}\n\nexport interface SerializerOptions<T> {\n /**\n * @default true\n */\n explode: boolean;\n style: T;\n}\n\nexport type ArrayStyle = 'form' | 'spaceDelimited' | 'pipeDelimited';\nexport type ArraySeparatorStyle = ArrayStyle | MatrixStyle;\ntype MatrixStyle = 'label' | 'matrix' | 'simple';\nexport type ObjectStyle = 'form' | 'deepObject';\ntype ObjectSeparatorStyle = ObjectStyle | MatrixStyle;\n\ninterface SerializePrimitiveParam extends SerializePrimitiveOptions {\n value: string;\n}\n\nexport const separatorArrayExplode = (style: ArraySeparatorStyle): '.' | ';' | ',' | '&' => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const separatorArrayNoExplode = (style: ArraySeparatorStyle): ',' | '|' | '%20' => {\n switch (style) {\n case 'form':\n return ',';\n case 'pipeDelimited':\n return '|';\n case 'spaceDelimited':\n return '%20';\n default:\n return ',';\n }\n};\n\nexport const separatorObjectExplode = (style: ObjectSeparatorStyle): '.' | ';' | ',' | '&' => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const serializeArrayParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n}: SerializeOptions<ArraySeparatorStyle> & {\n value: unknown[];\n}): string => {\n if (!explode) {\n const joinedValues = (\n allowReserved ? value : value.map((v) => encodeURIComponent(v as string))\n ).join(separatorArrayNoExplode(style));\n switch (style) {\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n case 'simple':\n return joinedValues;\n default:\n return `${name}=${joinedValues}`;\n }\n }\n\n const separator = separatorArrayExplode(style);\n const joinedValues = value\n .map((v) => {\n if (style === 'label' || style === 'simple') {\n return allowReserved ? v : encodeURIComponent(v as string);\n }\n\n return serializePrimitiveParam({\n allowReserved,\n name,\n value: v as string,\n });\n })\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n\nexport const serializePrimitiveParam = ({\n allowReserved,\n name,\n value,\n}: SerializePrimitiveParam): string => {\n if (value === undefined || value === null) {\n return '';\n }\n\n if (typeof value === 'object') {\n throw new Error(\n 'Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.',\n );\n }\n\n return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;\n};\n\nexport const serializeObjectParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n valueOnly,\n}: SerializeOptions<ObjectSeparatorStyle> & {\n value: Record<string, unknown> | Date;\n valueOnly?: boolean;\n}): string => {\n if (value instanceof Date) {\n return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;\n }\n\n if (style !== 'deepObject' && !explode) {\n let values: string[] = [];\n Object.entries(value).forEach(([key, v]) => {\n values = [...values, key, allowReserved ? (v as string) : encodeURIComponent(v as string)];\n });\n const joinedValues = values.join(',');\n switch (style) {\n case 'form':\n return `${name}=${joinedValues}`;\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n default:\n return joinedValues;\n }\n }\n\n const separator = separatorObjectExplode(style);\n const joinedValues = Object.entries(value)\n .map(([key, v]) =>\n serializePrimitiveParam({\n allowReserved,\n name: style === 'deepObject' ? `${name}[${key}]` : key,\n value: v as string,\n }),\n )\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { BodySerializer, QuerySerializer } from './bodySerializer.gen';\nimport {\n type ArraySeparatorStyle,\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from './pathSerializer.gen';\n\nexport interface PathSerializer {\n path: Record<string, unknown>;\n url: string;\n}\n\nexport const PATH_PARAM_RE: RegExp = /\\{[^{}]+\\}/g;\n\nexport const defaultPathSerializer = ({ path, url: _url }: PathSerializer): string => {\n let url = _url;\n const matches = _url.match(PATH_PARAM_RE);\n if (matches) {\n for (const match of matches) {\n let explode = false;\n let name = match.substring(1, match.length - 1);\n let style: ArraySeparatorStyle = 'simple';\n\n if (name.endsWith('*')) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n\n if (name.startsWith('.')) {\n name = name.substring(1);\n style = 'label';\n } else if (name.startsWith(';')) {\n name = name.substring(1);\n style = 'matrix';\n }\n\n const value = path[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n url = url.replace(match, serializeArrayParam({ explode, name, style, value }));\n continue;\n }\n\n if (typeof value === 'object') {\n url = url.replace(\n match,\n serializeObjectParam({\n explode,\n name,\n style,\n value: value as Record<string, unknown>,\n valueOnly: true,\n }),\n );\n continue;\n }\n\n if (style === 'matrix') {\n url = url.replace(\n match,\n `;${serializePrimitiveParam({\n name,\n value: value as string,\n })}`,\n );\n continue;\n }\n\n const replaceValue = encodeURIComponent(\n style === 'label' ? `.${value as string}` : (value as string),\n );\n url = url.replace(match, replaceValue);\n }\n }\n return url;\n};\n\nexport const getUrl = ({\n baseUrl,\n path,\n query,\n querySerializer,\n url: _url,\n}: {\n baseUrl?: string;\n path?: Record<string, unknown>;\n query?: Record<string, unknown>;\n querySerializer: QuerySerializer;\n url: string;\n}): string => {\n const pathUrl = _url.startsWith('/') ? _url : `/${_url}`;\n let url = (baseUrl ?? '') + pathUrl;\n if (path) {\n url = defaultPathSerializer({ path, url });\n }\n let search = query ? querySerializer(query) : '';\n if (search.startsWith('?')) {\n search = search.substring(1);\n }\n if (search) {\n url += `?${search}`;\n }\n return url;\n};\n\nexport function getValidRequestBody(options: {\n body?: unknown;\n bodySerializer?: BodySerializer | null;\n serializedBody?: unknown;\n}): unknown {\n const hasBody = options.body !== undefined;\n const isSerializedBody = hasBody && options.bodySerializer;\n\n if (isSerializedBody) {\n if ('serializedBody' in options) {\n const hasSerializedBody =\n options.serializedBody !== undefined && options.serializedBody !== '';\n\n return hasSerializedBody ? options.serializedBody : null;\n }\n\n // not all clients implement a serializedBody property (i.e., client-axios)\n return options.body !== '' ? options.body : null;\n }\n\n // plain/text body\n if (hasBody) {\n return options.body;\n }\n\n // no body was provided\n return undefined;\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nexport type AuthToken = string | undefined;\n\nexport interface Auth {\n /**\n * Which part of the request do we use to send the auth?\n *\n * @default 'header'\n */\n in?: 'header' | 'query' | 'cookie';\n /**\n * A unique identifier for the security scheme.\n *\n * Defined only when there are multiple security schemes whose `Auth`\n * shape would otherwise be identical.\n */\n key?: string;\n /**\n * Header or query parameter name.\n *\n * @default 'Authorization'\n */\n name?: string;\n scheme?: 'basic' | 'bearer';\n type: 'apiKey' | 'http';\n}\n\nexport const getAuthToken = async (\n auth: Auth,\n callback: ((auth: Auth) => Promise<AuthToken> | AuthToken) | AuthToken,\n): Promise<string | undefined> => {\n const token = typeof callback === 'function' ? await callback(auth) : callback;\n\n if (!token) {\n return;\n }\n\n if (auth.scheme === 'bearer') {\n return `Bearer ${token}`;\n }\n\n if (auth.scheme === 'basic') {\n return `Basic ${btoa(token)}`;\n }\n\n return token;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { getAuthToken } from '../core/auth.gen';\nimport type { QuerySerializerOptions } from '../core/bodySerializer.gen';\nimport { jsonBodySerializer } from '../core/bodySerializer.gen';\nimport {\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from '../core/pathSerializer.gen';\nimport { getUrl } from '../core/utils.gen';\nimport type { Client, ClientOptions, Config, RequestOptions } from './types.gen';\n\nexport const createQuerySerializer = <T = unknown>({\n parameters = {},\n ...args\n}: QuerySerializerOptions = {}): ((queryParams: T) => string) => {\n const querySerializer = (queryParams: T): string => {\n const search: string[] = [];\n if (queryParams && typeof queryParams === 'object') {\n for (const name in queryParams) {\n const value = queryParams[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n const options = parameters[name] || args;\n\n if (Array.isArray(value)) {\n const serializedArray = serializeArrayParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'form',\n value,\n ...options.array,\n });\n if (serializedArray) search.push(serializedArray);\n } else if (typeof value === 'object') {\n const serializedObject = serializeObjectParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'deepObject',\n value: value as Record<string, unknown>,\n ...options.object,\n });\n if (serializedObject) search.push(serializedObject);\n } else {\n const serializedPrimitive = serializePrimitiveParam({\n allowReserved: options.allowReserved,\n name,\n value: value as string,\n });\n if (serializedPrimitive) search.push(serializedPrimitive);\n }\n }\n }\n return search.join('&');\n };\n return querySerializer;\n};\n\n/**\n * Infers parseAs value from provided Content-Type header.\n */\nexport const getParseAs = (contentType: string | null): Exclude<Config['parseAs'], 'auto'> => {\n if (!contentType) {\n // If no Content-Type header is provided, the best we can do is return the raw response body,\n // which is effectively the same as the 'stream' option.\n return 'stream';\n }\n\n const cleanContent = contentType.split(';')[0]?.trim();\n\n if (!cleanContent) {\n return;\n }\n\n if (cleanContent.startsWith('application/json') || cleanContent.endsWith('+json')) {\n return 'json';\n }\n\n if (cleanContent === 'multipart/form-data') {\n return 'formData';\n }\n\n if (\n ['application/', 'audio/', 'image/', 'video/'].some((type) => cleanContent.startsWith(type))\n ) {\n return 'blob';\n }\n\n if (cleanContent.startsWith('text/')) {\n return 'text';\n }\n\n return;\n};\n\nconst checkForExistence = (\n options: Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n },\n name?: string,\n): boolean => {\n if (!name) {\n return false;\n }\n if (\n options.headers.has(name) ||\n options.query?.[name] ||\n options.headers.get('Cookie')?.includes(`${name}=`)\n ) {\n return true;\n }\n return false;\n};\n\nexport async function setAuthParams(\n options: Pick<RequestOptions, 'auth' | 'query' | 'security'> & {\n headers: Headers;\n },\n): Promise<void> {\n for (const auth of options.security ?? []) {\n if (checkForExistence(options, auth.name)) {\n continue;\n }\n\n const token = await getAuthToken(auth, options.auth);\n\n if (!token) {\n continue;\n }\n\n const name = auth.name ?? 'Authorization';\n\n switch (auth.in) {\n case 'query':\n if (!options.query) {\n options.query = {};\n }\n options.query[name] = token;\n break;\n case 'cookie':\n options.headers.append('Cookie', `${name}=${token}`);\n break;\n case 'header':\n default:\n options.headers.set(name, token);\n break;\n }\n }\n}\n\nexport const buildUrl: Client['buildUrl'] = (options) =>\n getUrl({\n baseUrl: options.baseUrl as string,\n path: options.path,\n query: options.query,\n querySerializer:\n typeof options.querySerializer === 'function'\n ? options.querySerializer\n : createQuerySerializer(options.querySerializer),\n url: options.url,\n });\n\nexport const mergeConfigs = (a: Config, b: Config): Config => {\n const config = { ...a, ...b };\n if (config.baseUrl?.endsWith('/')) {\n config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);\n }\n config.headers = mergeHeaders(a.headers, b.headers);\n return config;\n};\n\nconst headersEntries = (headers: Headers): Array<[string, string]> => {\n const entries: Array<[string, string]> = [];\n headers.forEach((value, key) => {\n entries.push([key, value]);\n });\n return entries;\n};\n\nexport const mergeHeaders = (\n ...headers: Array<Required<Config>['headers'] | undefined>\n): Headers => {\n const mergedHeaders = new Headers();\n for (const header of headers) {\n if (!header) {\n continue;\n }\n\n const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header);\n\n for (const [key, value] of iterator) {\n if (value === null) {\n mergedHeaders.delete(key);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n mergedHeaders.append(key, v as string);\n }\n } else if (value !== undefined) {\n // assume object headers are meant to be JSON stringified, i.e., their\n // content value in OpenAPI specification is 'application/json'\n mergedHeaders.set(\n key,\n typeof value === 'object' ? JSON.stringify(value) : (value as string),\n );\n }\n }\n }\n return mergedHeaders;\n};\n\ntype ErrInterceptor<Err, Res, Req, Options> = (\n error: Err,\n /** response may be undefined due to a network error where no response object is produced */\n response: Res | undefined,\n /** request may be undefined, because error may be from building the request object itself */\n request: Req | undefined,\n options: Options,\n) => Err | Promise<Err>;\n\ntype ReqInterceptor<Req, Options> = (request: Req, options: Options) => Req | Promise<Req>;\n\ntype ResInterceptor<Res, Req, Options> = (\n response: Res,\n request: Req,\n options: Options,\n) => Res | Promise<Res>;\n\nclass Interceptors<Interceptor> {\n fns: Array<Interceptor | null> = [];\n\n clear(): void {\n this.fns = [];\n }\n\n eject(id: number | Interceptor): void {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = null;\n }\n }\n\n exists(id: number | Interceptor): boolean {\n const index = this.getInterceptorIndex(id);\n return Boolean(this.fns[index]);\n }\n\n getInterceptorIndex(id: number | Interceptor): number {\n if (typeof id === 'number') {\n return this.fns[id] ? id : -1;\n }\n return this.fns.indexOf(id);\n }\n\n update(id: number | Interceptor, fn: Interceptor): number | Interceptor | false {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = fn;\n return id;\n }\n return false;\n }\n\n use(fn: Interceptor): number {\n this.fns.push(fn);\n return this.fns.length - 1;\n }\n}\n\nexport interface Middleware<Req, Res, Err, Options> {\n error: Interceptors<ErrInterceptor<Err, Res, Req, Options>>;\n request: Interceptors<ReqInterceptor<Req, Options>>;\n response: Interceptors<ResInterceptor<Res, Req, Options>>;\n}\n\nexport const createInterceptors = <Req, Res, Err, Options>(): Middleware<\n Req,\n Res,\n Err,\n Options\n> => ({\n error: new Interceptors<ErrInterceptor<Err, Res, Req, Options>>(),\n request: new Interceptors<ReqInterceptor<Req, Options>>(),\n response: new Interceptors<ResInterceptor<Res, Req, Options>>(),\n});\n\nconst defaultQuerySerializer = createQuerySerializer({\n allowReserved: false,\n array: {\n explode: true,\n style: 'form',\n },\n object: {\n explode: true,\n style: 'deepObject',\n },\n});\n\nconst defaultHeaders = {\n 'Content-Type': 'application/json',\n};\n\nexport const createConfig = <T extends ClientOptions = ClientOptions>(\n override: Config<Omit<ClientOptions, keyof T> & T> = {},\n): Config<Omit<ClientOptions, keyof T> & T> => ({\n ...jsonBodySerializer,\n headers: defaultHeaders,\n parseAs: 'auto',\n querySerializer: defaultQuerySerializer,\n ...override,\n});\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { createSseClient } from '../core/serverSentEvents.gen';\nimport type { HttpMethod } from '../core/types.gen';\nimport { getValidRequestBody } from '../core/utils.gen';\nimport type { Client, Config, RequestOptions, ResolvedRequestOptions } from './types.gen';\nimport {\n buildUrl,\n createConfig,\n createInterceptors,\n getParseAs,\n mergeConfigs,\n mergeHeaders,\n setAuthParams,\n} from './utils.gen';\n\ntype ReqInit = Omit<RequestInit, 'body' | 'headers'> & {\n body?: any;\n headers: ReturnType<typeof mergeHeaders>;\n};\n\nexport const createClient = (config: Config = {}): Client => {\n let _config = mergeConfigs(createConfig(), config);\n\n const getConfig = (): Config => ({ ..._config });\n\n const setConfig = (config: Config): Config => {\n _config = mergeConfigs(_config, config);\n return getConfig();\n };\n\n const interceptors = createInterceptors<Request, Response, unknown, ResolvedRequestOptions>();\n\n const beforeRequest = async <\n TData = unknown,\n TResponseStyle extends 'data' | 'fields' = 'fields',\n ThrowOnError extends boolean = boolean,\n Url extends string = string,\n >(\n options: RequestOptions<TData, TResponseStyle, ThrowOnError, Url>,\n ) => {\n const opts = {\n ..._config,\n ...options,\n fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,\n headers: mergeHeaders(_config.headers, options.headers),\n serializedBody: undefined as string | undefined,\n };\n\n if (opts.security) {\n await setAuthParams(opts);\n }\n\n if (opts.requestValidator) {\n await opts.requestValidator(opts);\n }\n\n if (opts.body !== undefined && opts.bodySerializer) {\n opts.serializedBody = opts.bodySerializer(opts.body) as string | undefined;\n }\n\n // remove Content-Type header if body is empty to avoid sending invalid requests\n if (opts.body === undefined || opts.serializedBody === '') {\n opts.headers.delete('Content-Type');\n }\n\n const resolvedOpts = opts as typeof opts &\n ResolvedRequestOptions<TResponseStyle, ThrowOnError, Url>;\n const url = buildUrl(resolvedOpts);\n\n return { opts: resolvedOpts, url };\n };\n\n const request: Client['request'] = async (options) => {\n const throwOnError = options.throwOnError ?? _config.throwOnError;\n const responseStyle = options.responseStyle ?? _config.responseStyle;\n\n let request: Request | undefined;\n let response: Response | undefined;\n\n try {\n const { opts, url } = await beforeRequest(options);\n const requestInit: ReqInit = {\n redirect: 'follow',\n ...opts,\n body: getValidRequestBody(opts),\n };\n\n request = new Request(url, requestInit);\n\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = opts.fetch!;\n\n response = await _fetch(request);\n\n for (const fn of interceptors.response.fns) {\n if (fn) {\n response = await fn(response, request, opts);\n }\n }\n\n const result = {\n request,\n response,\n };\n\n if (response.ok) {\n const parseAs =\n (opts.parseAs === 'auto'\n ? getParseAs(response.headers.get('Content-Type'))\n : opts.parseAs) ?? 'json';\n\n if (response.status === 204 || response.headers.get('Content-Length') === '0') {\n let emptyData: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'text':\n emptyData = await response[parseAs]();\n break;\n case 'formData':\n emptyData = new FormData();\n break;\n case 'stream':\n emptyData = response.body;\n break;\n case 'json':\n default:\n emptyData = {};\n break;\n }\n return opts.responseStyle === 'data'\n ? emptyData\n : {\n data: emptyData,\n ...result,\n };\n }\n\n let data: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'formData':\n case 'text':\n data = await response[parseAs]();\n break;\n case 'json': {\n // Some servers return 200 with no Content-Length and empty body.\n // response.json() would throw; read as text and parse if non-empty.\n const text = await response.text();\n data = text ? JSON.parse(text) : {};\n break;\n }\n case 'stream':\n return opts.responseStyle === 'data'\n ? response.body\n : {\n data: response.body,\n ...result,\n };\n }\n\n if (parseAs === 'json') {\n if (opts.responseValidator) {\n await opts.responseValidator(data);\n }\n\n if (opts.responseTransformer) {\n data = await opts.responseTransformer(data);\n }\n }\n\n return opts.responseStyle === 'data'\n ? data\n : {\n data,\n ...result,\n };\n }\n\n const textError = await response.text();\n let jsonError: unknown;\n\n try {\n jsonError = JSON.parse(textError);\n } catch {\n // noop\n }\n\n throw jsonError ?? textError;\n } catch (error) {\n let finalError = error;\n\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = await fn(finalError, response, request, options as ResolvedRequestOptions);\n }\n }\n\n finalError = finalError || {};\n\n if (throwOnError) {\n throw finalError;\n }\n\n // TODO: we probably want to return error and improve types\n return responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n request,\n response,\n };\n }\n };\n\n const makeMethodFn = (method: Uppercase<HttpMethod>) => (options: RequestOptions) =>\n request({ ...options, method });\n\n const makeSseFn = (method: Uppercase<HttpMethod>) => async (options: RequestOptions) => {\n const { opts, url } = await beforeRequest(options);\n return createSseClient({\n ...opts,\n body: opts.body as BodyInit | null | undefined,\n method,\n onRequest: async (url, init) => {\n let request = new Request(url, init);\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n return request;\n },\n serializedBody: getValidRequestBody(opts) as BodyInit | null | undefined,\n url,\n });\n };\n\n const _buildUrl: Client['buildUrl'] = (options) => buildUrl({ ..._config, ...options });\n\n return {\n buildUrl: _buildUrl,\n connect: makeMethodFn('CONNECT'),\n delete: makeMethodFn('DELETE'),\n get: makeMethodFn('GET'),\n getConfig,\n head: makeMethodFn('HEAD'),\n interceptors,\n options: makeMethodFn('OPTIONS'),\n patch: makeMethodFn('PATCH'),\n post: makeMethodFn('POST'),\n put: makeMethodFn('PUT'),\n request,\n setConfig,\n sse: {\n connect: makeSseFn('CONNECT'),\n delete: makeSseFn('DELETE'),\n get: makeSseFn('GET'),\n head: makeSseFn('HEAD'),\n options: makeSseFn('OPTIONS'),\n patch: makeSseFn('PATCH'),\n post: makeSseFn('POST'),\n put: makeSseFn('PUT'),\n trace: makeSseFn('TRACE'),\n },\n trace: makeMethodFn('TRACE'),\n } as Client;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { type Client, type ClientOptions, type Config, createClient, createConfig } from './client';\nimport type { ClientOptions as ClientOptions2 } from './types.gen';\n\n/**\n * The `createClientConfig()` function will be called on client initialization\n * and the returned object will become the client's initial configuration.\n *\n * You may want to initialize your client this way instead of calling\n * `setConfig()`. This is useful for example if you're using Next.js\n * to ensure your client always has the correct values.\n */\nexport type CreateClientConfig<T extends ClientOptions = ClientOptions2> = (override?: Config<ClientOptions & T>) => Config<Required<ClientOptions> & T>;\n\nexport const client: Client = createClient(createConfig<ClientOptions2>({ baseUrl: 'https://damm-api.meteora.ag' }));\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Client, ClientMeta, Options as Options2, RequestResult, TDataShape } from './client';\nimport { client } from './client.gen';\nimport type { GetAlphaVaultConfigsData, GetAlphaVaultConfigsResponses, GetAlphaVaultData, GetAlphaVaultResponses, GetFarmsData, GetFarmsResponses, GetFeeConfigByConfigAddressData, GetFeeConfigByConfigAddressResponses, GetPoolConfigsData, GetPoolConfigsResponses, GetPoolsByVersionData, GetPoolsByVersionResponses, GetPoolsData, GetPoolsMetricsData, GetPoolsMetricsResponses, GetPoolsResponses, GetPoolsSearchData, GetPoolsSearchResponses, PostPoolsByAVaultLpData, PostPoolsByAVaultLpResponses } from './types.gen';\n\nexport type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean, TResponse = unknown> = Options2<TData, ThrowOnError, TResponse> & {\n /**\n * You can provide a client instance returned by `createClient()` instead of\n * individual options. This might be also useful if you want to implement a\n * custom client.\n */\n client?: Client;\n /**\n * You can pass arbitrary values through the `meta` object. This can be\n * used to access values that aren't defined as part of the SDK function.\n */\n meta?: keyof ClientMeta extends never ? Record<string, unknown> : ClientMeta;\n};\n\nclass HeyApiClient {\n protected client: Client;\n \n constructor(args?: {\n client?: Client;\n }) {\n this.client = args?.client ?? client;\n }\n}\n\nclass HeyApiRegistry<T> {\n private readonly defaultKey = 'default';\n \n private readonly instances: Map<string, T> = new Map();\n \n get(key?: string): T {\n const instance = this.instances.get(key ?? this.defaultKey);\n if (!instance) {\n throw new Error(`No SDK client found. Create one with \"new DammV1Api()\" to fix this error.`);\n }\n return instance;\n }\n \n set(value: T, key?: string): void {\n this.instances.set(key ?? this.defaultKey, value);\n }\n}\n\nexport class AlphaVault extends HeyApiClient {\n /**\n * Alpha Vaults\n */\n public getVaults<ThrowOnError extends boolean = false>(options?: Options<GetAlphaVaultData, ThrowOnError>): RequestResult<GetAlphaVaultResponses, unknown, ThrowOnError> {\n return (options?.client ?? this.client).get<GetAlphaVaultResponses, unknown, ThrowOnError>({ url: '/alpha-vault', ...options });\n }\n \n /**\n * Alpha Vault Configs\n */\n public getAll<ThrowOnError extends boolean = false>(options?: Options<GetAlphaVaultConfigsData, ThrowOnError>): RequestResult<GetAlphaVaultConfigsResponses, unknown, ThrowOnError> {\n return (options?.client ?? this.client).get<GetAlphaVaultConfigsResponses, unknown, ThrowOnError>({ url: '/alpha-vault-configs', ...options });\n }\n}\n\nexport class Pools extends HeyApiClient {\n /**\n * Pools With Farms\n */\n public getPoolsWithFarm<ThrowOnError extends boolean = false>(options?: Options<GetFarmsData, ThrowOnError>): RequestResult<GetFarmsResponses, unknown, ThrowOnError> {\n return (options?.client ?? this.client).get<GetFarmsResponses, unknown, ThrowOnError>({ url: '/farms', ...options });\n }\n \n /**\n * Pool Configs\n */\n public getAllPoolConfigs<ThrowOnError extends boolean = false>(options?: Options<GetPoolConfigsData, ThrowOnError>): RequestResult<GetPoolConfigsResponses, unknown, ThrowOnError> {\n return (options?.client ?? this.client).get<GetPoolConfigsResponses, unknown, ThrowOnError>({ url: '/pool-configs', ...options });\n }\n \n /**\n * Pools\n */\n public getPools<ThrowOnError extends boolean = false>(options?: Options<GetPoolsData, ThrowOnError>): RequestResult<GetPoolsResponses, unknown, ThrowOnError> {\n return (options?.client ?? this.client).get<GetPoolsResponses, unknown, ThrowOnError>({ url: '/pools', ...options });\n }\n \n /**\n * Pool Metrics\n */\n public getPoolsMetrics<ThrowOnError extends boolean = false>(options?: Options<GetPoolsMetricsData, ThrowOnError>): RequestResult<GetPoolsMetricsResponses, unknown, ThrowOnError> {\n return (options?.client ?? this.client).get<GetPoolsMetricsResponses, unknown, ThrowOnError>({ url: '/pools-metrics', ...options });\n }\n \n /**\n * Pool Search\n */\n public filterAndGetPoolInfo<ThrowOnError extends boolean = false>(options: Options<GetPoolsSearchData, ThrowOnError>): RequestResult<GetPoolsSearchResponses, unknown, ThrowOnError> {\n return (options.client ?? this.client).get<GetPoolsSearchResponses, unknown, ThrowOnError>({ url: '/pools/search', ...options });\n }\n \n /**\n * Pool Search Deprecated\n */\n public filterAndGetPoolInfoDeprecated<ThrowOnError extends boolean = false>(options: Options<GetPoolsByVersionData, ThrowOnError>): RequestResult<GetPoolsByVersionResponses, unknown, ThrowOnError> {\n return (options.client ?? this.client).get<GetPoolsByVersionResponses, unknown, ThrowOnError>({ url: '/pools/{version}', ...options });\n }\n \n /**\n * Pools By A Vault LP\n */\n public getPoolsByAVaultLp<ThrowOnError extends boolean = false>(options: Options<PostPoolsByAVaultLpData, ThrowOnError>): RequestResult<PostPoolsByAVaultLpResponses, unknown, ThrowOnError> {\n return (options.client ?? this.client).post<PostPoolsByAVaultLpResponses, unknown, ThrowOnError>({\n url: '/pools_by_a_vault_lp',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n });\n }\n}\n\nexport class FeeConfigs extends HeyApiClient {\n /**\n * Fee Configs\n */\n public getConfigAssociatedFeeConfigs<ThrowOnError extends boolean = false>(options: Options<GetFeeConfigByConfigAddressData, ThrowOnError>): RequestResult<GetFeeConfigByConfigAddressResponses, unknown, ThrowOnError> {\n return (options.client ?? this.client).get<GetFeeConfigByConfigAddressResponses, unknown, ThrowOnError>({ url: '/fee-config/{config_address}', ...options });\n }\n}\n\nexport class DammV1Api extends HeyApiClient {\n public static readonly __registry: HeyApiRegistry<DammV1Api> = new HeyApiRegistry<DammV1Api>();\n \n constructor(args?: {\n client?: Client;\n key?: string;\n }) {\n super(args);\n DammV1Api.__registry.set(this, args?.key);\n }\n \n private _alphaVault?: AlphaVault;\n get alphaVault(): AlphaVault {\n return this._alphaVault ??= new AlphaVault({ client: this.client });\n }\n \n private _pools?: Pools;\n get pools(): Pools {\n return this._pools ??= new Pools({ client: this.client });\n }\n \n private _feeConfigs?: FeeConfigs;\n get feeConfigs(): FeeConfigs {\n return this._feeConfigs ??= new FeeConfigs({ client: this.client });\n }\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { ArrayStyle, ObjectStyle, SerializerOptions } from './pathSerializer.gen';\n\nexport type QuerySerializer = (query: Record<string, unknown>) => string;\n\nexport type BodySerializer = (body: unknown) => unknown;\n\ntype QuerySerializerOptionsObject = {\n allowReserved?: boolean;\n array?: Partial<SerializerOptions<ArrayStyle>>;\n object?: Partial<SerializerOptions<ObjectStyle>>;\n};\n\nexport type QuerySerializerOptions = QuerySerializerOptionsObject & {\n /**\n * Per-parameter serialization overrides. When provided, these settings\n * override the global array/object settings for specific parameter names.\n */\n parameters?: Record<string, QuerySerializerOptionsObject>;\n};\n\nconst serializeFormDataPair = (data: FormData, key: string, value: unknown): void => {\n if (typeof value === 'string' || value instanceof Blob) {\n data.append(key, value);\n } else if (value instanceof Date) {\n data.append(key, value.toISOString());\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nconst serializeUrlSearchParamsPair = (data: URLSearchParams, key: string, value: unknown): void => {\n if (typeof value === 'string') {\n data.append(key, value);\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nexport const formDataBodySerializer = {\n bodySerializer: (body: unknown): FormData => {\n const data = new FormData();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeFormDataPair(data, key, v));\n } else {\n serializeFormDataPair(data, key, value);\n }\n });\n\n return data;\n },\n};\n\nexport const jsonBodySerializer = {\n bodySerializer: (body: unknown): string =>\n JSON.stringify(body, (_key, value) => (typeof value === 'bigint' ? value.toString() : value)),\n};\n\nexport const urlSearchParamsBodySerializer = {\n bodySerializer: (body: unknown): string => {\n const data = new URLSearchParams();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeUrlSearchParamsPair(data, key, v));\n } else {\n serializeUrlSearchParamsPair(data, key, value);\n }\n });\n\n return data.toString();\n },\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Config } from './types.gen';\n\nexport type ServerSentEventsOptions<TData = unknown> = Omit<RequestInit, 'method'> &\n Pick<Config, 'method' | 'responseTransformer' | 'responseValidator'> & {\n /**\n * Fetch API implementation. You can use this option to provide a custom\n * fetch instance.\n *\n * @default globalThis.fetch\n */\n fetch?: typeof fetch;\n /**\n * Implementing clients can call request interceptors inside this hook.\n */\n onRequest?: (url: string, init: RequestInit) => Promise<Request>;\n /**\n * Callback invoked when a network or parsing error occurs during streaming.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param error The error that occurred.\n */\n onSseError?: (error: unknown) => void;\n /**\n * Callback invoked when an event is streamed from the server.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param event Event streamed from the server.\n * @returns Nothing (void).\n */\n onSseEvent?: (event: StreamEvent<TData>) => void;\n serializedBody?: RequestInit['body'];\n /**\n * Default retry delay in milliseconds.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 3000\n */\n sseDefaultRetryDelay?: number;\n /**\n * Maximum number of retry attempts before giving up.\n */\n sseMaxRetryAttempts?: number;\n /**\n * Maximum retry delay in milliseconds.\n *\n * Applies only when exponential backoff is used.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 30000\n */\n sseMaxRetryDelay?: number;\n /**\n * Optional sleep function for retry backoff.\n *\n * Defaults to using `setTimeout`.\n */\n sseSleepFn?: (ms: number) => Promise<void>;\n url: string;\n };\n\nexport interface StreamEvent<TData = unknown> {\n data: TData;\n event?: string;\n id?: string;\n retry?: number;\n}\n\nexport type ServerSentEventsResult<TData = unknown, TReturn = void, TNext = unknown> = {\n stream: AsyncGenerator<\n TData extends Record<string, unknown> ? TData[keyof TData] : TData,\n TReturn,\n TNext\n >;\n};\n\nexport function createSseClient<TData = unknown>({\n onRequest,\n onSseError,\n onSseEvent,\n responseTransformer,\n responseValidator,\n sseDefaultRetryDelay,\n sseMaxRetryAttempts,\n sseMaxRetryDelay,\n sseSleepFn,\n url,\n ...options\n}: ServerSentEventsOptions): ServerSentEventsResult<TData> {\n let lastEventId: string | undefined;\n\n const sleep = sseSleepFn ?? ((ms: number) => new Promise((resolve) => setTimeout(resolve, ms)));\n\n const createStream = async function* () {\n let retryDelay: number = sseDefaultRetryDelay ?? 3000;\n let attempt = 0;\n const signal = options.signal ?? new AbortController().signal;\n\n while (true) {\n if (signal.aborted) break;\n\n attempt++;\n\n const headers =\n options.headers instanceof Headers\n ? options.headers\n : new Headers(options.headers as Record<string, string> | undefined);\n\n if (lastEventId !== undefined) {\n headers.set('Last-Event-ID', lastEventId);\n }\n\n try {\n const requestInit: RequestInit = {\n redirect: 'follow',\n ...options,\n body: options.serializedBody,\n headers,\n signal,\n };\n let request = new Request(url, requestInit);\n if (onRequest) {\n request = await onRequest(url, requestInit);\n }\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = options.fetch ?? globalThis.fetch;\n const response = await _fetch(request);\n\n if (!response.ok) throw new Error(`SSE failed: ${response.status} ${response.statusText}`);\n\n if (!response.body) throw new Error('No body in SSE response');\n\n const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();\n\n let buffer = '';\n\n const abortHandler = () => {\n try {\n reader.cancel();\n } catch {\n // noop\n }\n };\n\n signal.addEventListener('abort', abortHandler);\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += value;\n buffer = buffer.replace(/\\r\\n?/g, '\\n'); // normalize line endings\n\n const chunks = buffer.split('\\n\\n');\n buffer = chunks.pop() ?? '';\n\n for (const chunk of chunks) {\n const lines = chunk.split('\\n');\n const dataLines: Array<string> = [];\n let eventName: string | undefined;\n\n for (const line of lines) {\n if (line.startsWith('data:')) {\n dataLines.push(line.replace(/^data:\\s*/, ''));\n } else if (line.startsWith('event:')) {\n eventName = line.replace(/^event:\\s*/, '');\n } else if (line.startsWith('id:')) {\n lastEventId = line.replace(/^id:\\s*/, '');\n } else if (line.startsWith('retry:')) {\n const parsed = Number.parseInt(line.replace(/^retry:\\s*/, ''), 10);\n if (!Number.isNaN(parsed)) {\n retryDelay = parsed;\n }\n }\n }\n\n let data: unknown;\n let parsedJson = false;\n\n if (dataLines.length) {\n const rawData = dataLines.join('\\n');\n try {\n data = JSON.parse(rawData);\n parsedJson = true;\n } catch {\n data = rawData;\n }\n }\n\n if (parsedJson) {\n if (responseValidator) {\n await responseValidator(data);\n }\n\n if (responseTransformer) {\n data = await responseTransformer(data);\n }\n }\n\n onSseEvent?.({\n data,\n event: eventName,\n id: lastEventId,\n retry: retryDelay,\n });\n\n if (dataLines.length) {\n yield data as any;\n }\n }\n }\n } finally {\n signal.removeEventListener('abort', abortHandler);\n reader.releaseLock();\n }\n\n break; // exit loop on normal completion\n } catch (error) {\n // connection failed or aborted; retry after delay\n onSseError?.(error);\n\n if (sseMaxRetryAttempts !== undefined && attempt >= sseMaxRetryAttempts) {\n break; // stop after firing error\n }\n\n // exponential backoff: double retry each attempt, cap at 30s\n const backoff = Math.min(retryDelay * 2 ** (attempt - 1), sseMaxRetryDelay ?? 30000);\n await sleep(backoff);\n }\n }\n };\n\n const stream = createStream();\n\n return { stream };\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\ninterface SerializeOptions<T> extends SerializePrimitiveOptions, SerializerOptions<T> {}\n\ninterface SerializePrimitiveOptions {\n allowReserved?: boolean;\n name: string;\n}\n\nexport interface SerializerOptions<T> {\n /**\n * @default true\n */\n explode: boolean;\n style: T;\n}\n\nexport type ArrayStyle = 'form' | 'spaceDelimited' | 'pipeDelimited';\nexport type ArraySeparatorStyle = ArrayStyle | MatrixStyle;\ntype MatrixStyle = 'label' | 'matrix' | 'simple';\nexport type ObjectStyle = 'form' | 'deepObject';\ntype ObjectSeparatorStyle = ObjectStyle | MatrixStyle;\n\ninterface SerializePrimitiveParam extends SerializePrimitiveOptions {\n value: string;\n}\n\nexport const separatorArrayExplode = (style: ArraySeparatorStyle): '.' | ';' | ',' | '&' => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const separatorArrayNoExplode = (style: ArraySeparatorStyle): ',' | '|' | '%20' => {\n switch (style) {\n case 'form':\n return ',';\n case 'pipeDelimited':\n return '|';\n case 'spaceDelimited':\n return '%20';\n default:\n return ',';\n }\n};\n\nexport const separatorObjectExplode = (style: ObjectSeparatorStyle): '.' | ';' | ',' | '&' => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const serializeArrayParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n}: SerializeOptions<ArraySeparatorStyle> & {\n value: unknown[];\n}): string => {\n if (!explode) {\n const joinedValues = (\n allowReserved ? value : value.map((v) => encodeURIComponent(v as string))\n ).join(separatorArrayNoExplode(style));\n switch (style) {\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n case 'simple':\n return joinedValues;\n default:\n return `${name}=${joinedValues}`;\n }\n }\n\n const separator = separatorArrayExplode(style);\n const joinedValues = value\n .map((v) => {\n if (style === 'label' || style === 'simple') {\n return allowReserved ? v : encodeURIComponent(v as string);\n }\n\n return serializePrimitiveParam({\n allowReserved,\n name,\n value: v as string,\n });\n })\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n\nexport const serializePrimitiveParam = ({\n allowReserved,\n name,\n value,\n}: SerializePrimitiveParam): string => {\n if (value === undefined || value === null) {\n return '';\n }\n\n if (typeof value === 'object') {\n throw new Error(\n 'Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.',\n );\n }\n\n return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;\n};\n\nexport const serializeObjectParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n valueOnly,\n}: SerializeOptions<ObjectSeparatorStyle> & {\n value: Record<string, unknown> | Date;\n valueOnly?: boolean;\n}): string => {\n if (value instanceof Date) {\n return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;\n }\n\n if (style !== 'deepObject' && !explode) {\n let values: string[] = [];\n Object.entries(value).forEach(([key, v]) => {\n values = [...values, key, allowReserved ? (v as string) : encodeURIComponent(v as string)];\n });\n const joinedValues = values.join(',');\n switch (style) {\n case 'form':\n return `${name}=${joinedValues}`;\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n default:\n return joinedValues;\n }\n }\n\n const separator = separatorObjectExplode(style);\n const joinedValues = Object.entries(value)\n .map(([key, v]) =>\n serializePrimitiveParam({\n allowReserved,\n name: style === 'deepObject' ? `${name}[${key}]` : key,\n value: v as string,\n }),\n )\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { BodySerializer, QuerySerializer } from './bodySerializer.gen';\nimport {\n type ArraySeparatorStyle,\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from './pathSerializer.gen';\n\nexport interface PathSerializer {\n path: Record<string, unknown>;\n url: string;\n}\n\nexport const PATH_PARAM_RE: RegExp = /\\{[^{}]+\\}/g;\n\nexport const defaultPathSerializer = ({ path, url: _url }: PathSerializer): string => {\n let url = _url;\n const matches = _url.match(PATH_PARAM_RE);\n if (matches) {\n for (const match of matches) {\n let explode = false;\n let name = match.substring(1, match.length - 1);\n let style: ArraySeparatorStyle = 'simple';\n\n if (name.endsWith('*')) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n\n if (name.startsWith('.')) {\n name = name.substring(1);\n style = 'label';\n } else if (name.startsWith(';')) {\n name = name.substring(1);\n style = 'matrix';\n }\n\n const value = path[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n url = url.replace(match, serializeArrayParam({ explode, name, style, value }));\n continue;\n }\n\n if (typeof value === 'object') {\n url = url.replace(\n match,\n serializeObjectParam({\n explode,\n name,\n style,\n value: value as Record<string, unknown>,\n valueOnly: true,\n }),\n );\n continue;\n }\n\n if (style === 'matrix') {\n url = url.replace(\n match,\n `;${serializePrimitiveParam({\n name,\n value: value as string,\n })}`,\n );\n continue;\n }\n\n const replaceValue = encodeURIComponent(\n style === 'label' ? `.${value as string}` : (value as string),\n );\n url = url.replace(match, replaceValue);\n }\n }\n return url;\n};\n\nexport const getUrl = ({\n baseUrl,\n path,\n query,\n querySerializer,\n url: _url,\n}: {\n baseUrl?: string;\n path?: Record<string, unknown>;\n query?: Record<string, unknown>;\n querySerializer: QuerySerializer;\n url: string;\n}): string => {\n const pathUrl = _url.startsWith('/') ? _url : `/${_url}`;\n let url = (baseUrl ?? '') + pathUrl;\n if (path) {\n url = defaultPathSerializer({ path, url });\n }\n let search = query ? querySerializer(query) : '';\n if (search.startsWith('?')) {\n search = search.substring(1);\n }\n if (search) {\n url += `?${search}`;\n }\n return url;\n};\n\nexport function getValidRequestBody(options: {\n body?: unknown;\n bodySerializer?: BodySerializer | null;\n serializedBody?: unknown;\n}): unknown {\n const hasBody = options.body !== undefined;\n const isSerializedBody = hasBody && options.bodySerializer;\n\n if (isSerializedBody) {\n if ('serializedBody' in options) {\n const hasSerializedBody =\n options.serializedBody !== undefined && options.serializedBody !== '';\n\n return hasSerializedBody ? options.serializedBody : null;\n }\n\n // not all clients implement a serializedBody property (i.e., client-axios)\n return options.body !== '' ? options.body : null;\n }\n\n // plain/text body\n if (hasBody) {\n return options.body;\n }\n\n // no body was provided\n return undefined;\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nexport type AuthToken = string | undefined;\n\nexport interface Auth {\n /**\n * Which part of the request do we use to send the auth?\n *\n * @default 'header'\n */\n in?: 'header' | 'query' | 'cookie';\n /**\n * A unique identifier for the security scheme.\n *\n * Defined only when there are multiple security schemes whose `Auth`\n * shape would otherwise be identical.\n */\n key?: string;\n /**\n * Header or query parameter name.\n *\n * @default 'Authorization'\n */\n name?: string;\n scheme?: 'basic' | 'bearer';\n type: 'apiKey' | 'http';\n}\n\nexport const getAuthToken = async (\n auth: Auth,\n callback: ((auth: Auth) => Promise<AuthToken> | AuthToken) | AuthToken,\n): Promise<string | undefined> => {\n const token = typeof callback === 'function' ? await callback(auth) : callback;\n\n if (!token) {\n return;\n }\n\n if (auth.scheme === 'bearer') {\n return `Bearer ${token}`;\n }\n\n if (auth.scheme === 'basic') {\n return `Basic ${btoa(token)}`;\n }\n\n return token;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { getAuthToken } from '../core/auth.gen';\nimport type { QuerySerializerOptions } from '../core/bodySerializer.gen';\nimport { jsonBodySerializer } from '../core/bodySerializer.gen';\nimport {\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from '../core/pathSerializer.gen';\nimport { getUrl } from '../core/utils.gen';\nimport type { Client, ClientOptions, Config, RequestOptions } from './types.gen';\n\nexport const createQuerySerializer = <T = unknown>({\n parameters = {},\n ...args\n}: QuerySerializerOptions = {}): ((queryParams: T) => string) => {\n const querySerializer = (queryParams: T): string => {\n const search: string[] = [];\n if (queryParams && typeof queryParams === 'object') {\n for (const name in queryParams) {\n const value = queryParams[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n const options = parameters[name] || args;\n\n if (Array.isArray(value)) {\n const serializedArray = serializeArrayParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'form',\n value,\n ...options.array,\n });\n if (serializedArray) search.push(serializedArray);\n } else if (typeof value === 'object') {\n const serializedObject = serializeObjectParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'deepObject',\n value: value as Record<string, unknown>,\n ...options.object,\n });\n if (serializedObject) search.push(serializedObject);\n } else {\n const serializedPrimitive = serializePrimitiveParam({\n allowReserved: options.allowReserved,\n name,\n value: value as string,\n });\n if (serializedPrimitive) search.push(serializedPrimitive);\n }\n }\n }\n return search.join('&');\n };\n return querySerializer;\n};\n\n/**\n * Infers parseAs value from provided Content-Type header.\n */\nexport const getParseAs = (contentType: string | null): Exclude<Config['parseAs'], 'auto'> => {\n if (!contentType) {\n // If no Content-Type header is provided, the best we can do is return the raw response body,\n // which is effectively the same as the 'stream' option.\n return 'stream';\n }\n\n const cleanContent = contentType.split(';')[0]?.trim();\n\n if (!cleanContent) {\n return;\n }\n\n if (cleanContent.startsWith('application/json') || cleanContent.endsWith('+json')) {\n return 'json';\n }\n\n if (cleanContent === 'multipart/form-data') {\n return 'formData';\n }\n\n if (\n ['application/', 'audio/', 'image/', 'video/'].some((type) => cleanContent.startsWith(type))\n ) {\n return 'blob';\n }\n\n if (cleanContent.startsWith('text/')) {\n return 'text';\n }\n\n return;\n};\n\nconst checkForExistence = (\n options: Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n },\n name?: string,\n): boolean => {\n if (!name) {\n return false;\n }\n if (\n options.headers.has(name) ||\n options.query?.[name] ||\n options.headers.get('Cookie')?.includes(`${name}=`)\n ) {\n return true;\n }\n return false;\n};\n\nexport async function setAuthParams(\n options: Pick<RequestOptions, 'auth' | 'query' | 'security'> & {\n headers: Headers;\n },\n): Promise<void> {\n for (const auth of options.security ?? []) {\n if (checkForExistence(options, auth.name)) {\n continue;\n }\n\n const token = await getAuthToken(auth, options.auth);\n\n if (!token) {\n continue;\n }\n\n const name = auth.name ?? 'Authorization';\n\n switch (auth.in) {\n case 'query':\n if (!options.query) {\n options.query = {};\n }\n options.query[name] = token;\n break;\n case 'cookie':\n options.headers.append('Cookie', `${name}=${token}`);\n break;\n case 'header':\n default:\n options.headers.set(name, token);\n break;\n }\n }\n}\n\nexport const buildUrl: Client['buildUrl'] = (options) =>\n getUrl({\n baseUrl: options.baseUrl as string,\n path: options.path,\n query: options.query,\n querySerializer:\n typeof options.querySerializer === 'function'\n ? options.querySerializer\n : createQuerySerializer(options.querySerializer),\n url: options.url,\n });\n\nexport const mergeConfigs = (a: Config, b: Config): Config => {\n const config = { ...a, ...b };\n if (config.baseUrl?.endsWith('/')) {\n config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);\n }\n config.headers = mergeHeaders(a.headers, b.headers);\n return config;\n};\n\nconst headersEntries = (headers: Headers): Array<[string, string]> => {\n const entries: Array<[string, string]> = [];\n headers.forEach((value, key) => {\n entries.push([key, value]);\n });\n return entries;\n};\n\nexport const mergeHeaders = (\n ...headers: Array<Required<Config>['headers'] | undefined>\n): Headers => {\n const mergedHeaders = new Headers();\n for (const header of headers) {\n if (!header) {\n continue;\n }\n\n const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header);\n\n for (const [key, value] of iterator) {\n if (value === null) {\n mergedHeaders.delete(key);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n mergedHeaders.append(key, v as string);\n }\n } else if (value !== undefined) {\n // assume object headers are meant to be JSON stringified, i.e., their\n // content value in OpenAPI specification is 'application/json'\n mergedHeaders.set(\n key,\n typeof value === 'object' ? JSON.stringify(value) : (value as string),\n );\n }\n }\n }\n return mergedHeaders;\n};\n\ntype ErrInterceptor<Err, Res, Req, Options> = (\n error: Err,\n /** response may be undefined due to a network error where no response object is produced */\n response: Res | undefined,\n /** request may be undefined, because error may be from building the request object itself */\n request: Req | undefined,\n options: Options,\n) => Err | Promise<Err>;\n\ntype ReqInterceptor<Req, Options> = (request: Req, options: Options) => Req | Promise<Req>;\n\ntype ResInterceptor<Res, Req, Options> = (\n response: Res,\n request: Req,\n options: Options,\n) => Res | Promise<Res>;\n\nclass Interceptors<Interceptor> {\n fns: Array<Interceptor | null> = [];\n\n clear(): void {\n this.fns = [];\n }\n\n eject(id: number | Interceptor): void {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = null;\n }\n }\n\n exists(id: number | Interceptor): boolean {\n const index = this.getInterceptorIndex(id);\n return Boolean(this.fns[index]);\n }\n\n getInterceptorIndex(id: number | Interceptor): number {\n if (typeof id === 'number') {\n return this.fns[id] ? id : -1;\n }\n return this.fns.indexOf(id);\n }\n\n update(id: number | Interceptor, fn: Interceptor): number | Interceptor | false {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = fn;\n return id;\n }\n return false;\n }\n\n use(fn: Interceptor): number {\n this.fns.push(fn);\n return this.fns.length - 1;\n }\n}\n\nexport interface Middleware<Req, Res, Err, Options> {\n error: Interceptors<ErrInterceptor<Err, Res, Req, Options>>;\n request: Interceptors<ReqInterceptor<Req, Options>>;\n response: Interceptors<ResInterceptor<Res, Req, Options>>;\n}\n\nexport const createInterceptors = <Req, Res, Err, Options>(): Middleware<\n Req,\n Res,\n Err,\n Options\n> => ({\n error: new Interceptors<ErrInterceptor<Err, Res, Req, Options>>(),\n request: new Interceptors<ReqInterceptor<Req, Options>>(),\n response: new Interceptors<ResInterceptor<Res, Req, Options>>(),\n});\n\nconst defaultQuerySerializer = createQuerySerializer({\n allowReserved: false,\n array: {\n explode: true,\n style: 'form',\n },\n object: {\n explode: true,\n style: 'deepObject',\n },\n});\n\nconst defaultHeaders = {\n 'Content-Type': 'application/json',\n};\n\nexport const createConfig = <T extends ClientOptions = ClientOptions>(\n override: Config<Omit<ClientOptions, keyof T> & T> = {},\n): Config<Omit<ClientOptions, keyof T> & T> => ({\n ...jsonBodySerializer,\n headers: defaultHeaders,\n parseAs: 'auto',\n querySerializer: defaultQuerySerializer,\n ...override,\n});\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { createSseClient } from '../core/serverSentEvents.gen';\nimport type { HttpMethod } from '../core/types.gen';\nimport { getValidRequestBody } from '../core/utils.gen';\nimport type { Client, Config, RequestOptions, ResolvedRequestOptions } from './types.gen';\nimport {\n buildUrl,\n createConfig,\n createInterceptors,\n getParseAs,\n mergeConfigs,\n mergeHeaders,\n setAuthParams,\n} from './utils.gen';\n\ntype ReqInit = Omit<RequestInit, 'body' | 'headers'> & {\n body?: any;\n headers: ReturnType<typeof mergeHeaders>;\n};\n\nexport const createClient = (config: Config = {}): Client => {\n let _config = mergeConfigs(createConfig(), config);\n\n const getConfig = (): Config => ({ ..._config });\n\n const setConfig = (config: Config): Config => {\n _config = mergeConfigs(_config, config);\n return getConfig();\n };\n\n const interceptors = createInterceptors<Request, Response, unknown, ResolvedRequestOptions>();\n\n const beforeRequest = async <\n TData = unknown,\n TResponseStyle extends 'data' | 'fields' = 'fields',\n ThrowOnError extends boolean = boolean,\n Url extends string = string,\n >(\n options: RequestOptions<TData, TResponseStyle, ThrowOnError, Url>,\n ) => {\n const opts = {\n ..._config,\n ...options,\n fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,\n headers: mergeHeaders(_config.headers, options.headers),\n serializedBody: undefined as string | undefined,\n };\n\n if (opts.security) {\n await setAuthParams(opts);\n }\n\n if (opts.requestValidator) {\n await opts.requestValidator(opts);\n }\n\n if (opts.body !== undefined && opts.bodySerializer) {\n opts.serializedBody = opts.bodySerializer(opts.body) as string | undefined;\n }\n\n // remove Content-Type header if body is empty to avoid sending invalid requests\n if (opts.body === undefined || opts.serializedBody === '') {\n opts.headers.delete('Content-Type');\n }\n\n const resolvedOpts = opts as typeof opts &\n ResolvedRequestOptions<TResponseStyle, ThrowOnError, Url>;\n const url = buildUrl(resolvedOpts);\n\n return { opts: resolvedOpts, url };\n };\n\n const request: Client['request'] = async (options) => {\n const throwOnError = options.throwOnError ?? _config.throwOnError;\n const responseStyle = options.responseStyle ?? _config.responseStyle;\n\n let request: Request | undefined;\n let response: Response | undefined;\n\n try {\n const { opts, url } = await beforeRequest(options);\n const requestInit: ReqInit = {\n redirect: 'follow',\n ...opts,\n body: getValidRequestBody(opts),\n };\n\n request = new Request(url, requestInit);\n\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = opts.fetch!;\n\n response = await _fetch(request);\n\n for (const fn of interceptors.response.fns) {\n if (fn) {\n response = await fn(response, request, opts);\n }\n }\n\n const result = {\n request,\n response,\n };\n\n if (response.ok) {\n const parseAs =\n (opts.parseAs === 'auto'\n ? getParseAs(response.headers.get('Content-Type'))\n : opts.parseAs) ?? 'json';\n\n if (response.status === 204 || response.headers.get('Content-Length') === '0') {\n let emptyData: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'text':\n emptyData = await response[parseAs]();\n break;\n case 'formData':\n emptyData = new FormData();\n break;\n case 'stream':\n emptyData = response.body;\n break;\n case 'json':\n default:\n emptyData = {};\n break;\n }\n return opts.responseStyle === 'data'\n ? emptyData\n : {\n data: emptyData,\n ...result,\n };\n }\n\n let data: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'formData':\n case 'text':\n data = await response[parseAs]();\n break;\n case 'json': {\n // Some servers return 200 with no Content-Length and empty body.\n // response.json() would throw; read as text and parse if non-empty.\n const text = await response.text();\n data = text ? JSON.parse(text) : {};\n break;\n }\n case 'stream':\n return opts.responseStyle === 'data'\n ? response.body\n : {\n data: response.body,\n ...result,\n };\n }\n\n if (parseAs === 'json') {\n if (opts.responseValidator) {\n await opts.responseValidator(data);\n }\n\n if (opts.responseTransformer) {\n data = await opts.responseTransformer(data);\n }\n }\n\n return opts.responseStyle === 'data'\n ? data\n : {\n data,\n ...result,\n };\n }\n\n const textError = await response.text();\n let jsonError: unknown;\n\n try {\n jsonError = JSON.parse(textError);\n } catch {\n // noop\n }\n\n throw jsonError ?? textError;\n } catch (error) {\n let finalError = error;\n\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = await fn(finalError, response, request, options as ResolvedRequestOptions);\n }\n }\n\n finalError = finalError || {};\n\n if (throwOnError) {\n throw finalError;\n }\n\n // TODO: we probably want to return error and improve types\n return responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n request,\n response,\n };\n }\n };\n\n const makeMethodFn = (method: Uppercase<HttpMethod>) => (options: RequestOptions) =>\n request({ ...options, method });\n\n const makeSseFn = (method: Uppercase<HttpMethod>) => async (options: RequestOptions) => {\n const { opts, url } = await beforeRequest(options);\n return createSseClient({\n ...opts,\n body: opts.body as BodyInit | null | undefined,\n method,\n onRequest: async (url, init) => {\n let request = new Request(url, init);\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n return request;\n },\n serializedBody: getValidRequestBody(opts) as BodyInit | null | undefined,\n url,\n });\n };\n\n const _buildUrl: Client['buildUrl'] = (options) => buildUrl({ ..._config, ...options });\n\n return {\n buildUrl: _buildUrl,\n connect: makeMethodFn('CONNECT'),\n delete: makeMethodFn('DELETE'),\n get: makeMethodFn('GET'),\n getConfig,\n head: makeMethodFn('HEAD'),\n interceptors,\n options: makeMethodFn('OPTIONS'),\n patch: makeMethodFn('PATCH'),\n post: makeMethodFn('POST'),\n put: makeMethodFn('PUT'),\n request,\n setConfig,\n sse: {\n connect: makeSseFn('CONNECT'),\n delete: makeSseFn('DELETE'),\n get: makeSseFn('GET'),\n head: makeSseFn('HEAD'),\n options: makeSseFn('OPTIONS'),\n patch: makeSseFn('PATCH'),\n post: makeSseFn('POST'),\n put: makeSseFn('PUT'),\n trace: makeSseFn('TRACE'),\n },\n trace: makeMethodFn('TRACE'),\n } as Client;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { type Client, type ClientOptions, type Config, createClient, createConfig } from './client';\nimport type { ClientOptions as ClientOptions2 } from './types.gen';\n\n/**\n * The `createClientConfig()` function will be called on client initialization\n * and the returned object will become the client's initial configuration.\n *\n * You may want to initialize your client this way instead of calling\n * `setConfig()`. This is useful for example if you're using Next.js\n * to ensure your client always has the correct values.\n */\nexport type CreateClientConfig<T extends ClientOptions = ClientOptions2> = (override?: Config<ClientOptions & T>) => Config<Required<ClientOptions> & T>;\n\nexport const client: Client = createClient(createConfig<ClientOptions2>({ baseUrl: 'https://damm-v2.datapi.meteora.ag' }));\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Client, ClientMeta, Options as Options2, RequestResult, TDataShape } from './client';\nimport { client } from './client.gen';\nimport type { GetPoolsByAddressData, GetPoolsByAddressErrors, GetPoolsByAddressOhlcvData, GetPoolsByAddressOhlcvErrors, GetPoolsByAddressOhlcvResponses, GetPoolsByAddressResponses, GetPoolsByAddressVolumeHistoryData, GetPoolsByAddressVolumeHistoryErrors, GetPoolsByAddressVolumeHistoryResponses, GetPoolsData, GetPoolsErrors, GetPoolsGroupsByLexicalOrderMintsData, GetPoolsGroupsByLexicalOrderMintsErrors, GetPoolsGroupsByLexicalOrderMintsResponses, GetPoolsGroupsData, GetPoolsGroupsErrors, GetPoolsGroupsResponses, GetPoolsResponses, GetStatsProtocolMetricsData, GetStatsProtocolMetricsErrors, GetStatsProtocolMetricsResponses } from './types.gen';\n\nexport type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean, TResponse = unknown> = Options2<TData, ThrowOnError, TResponse> & {\n /**\n * You can provide a client instance returned by `createClient()` instead of\n * individual options. This might be also useful if you want to implement a\n * custom client.\n */\n client?: Client;\n /**\n * You can pass arbitrary values through the `meta` object. This can be\n * used to access values that aren't defined as part of the SDK function.\n */\n meta?: keyof ClientMeta extends never ? Record<string, unknown> : ClientMeta;\n};\n\nclass HeyApiClient {\n protected client: Client;\n \n constructor(args?: {\n client?: Client;\n }) {\n this.client = args?.client ?? client;\n }\n}\n\nclass HeyApiRegistry<T> {\n private readonly defaultKey = 'default';\n \n private readonly instances: Map<string, T> = new Map();\n \n get(key?: string): T {\n const instance = this.instances.get(key ?? this.defaultKey);\n if (!instance) {\n throw new Error(`No SDK client found. Create one with \"new DammV2Api()\" to fix this error.`);\n }\n return instance;\n }\n \n set(value: T, key?: string): void {\n this.instances.set(key ?? this.defaultKey, value);\n }\n}\n\nexport class Pools extends HeyApiClient {\n /**\n * Pools\n *\n * Returns a paginated list of pools\n */\n public getPools<ThrowOnError extends boolean = false>(options?: Options<GetPoolsData, ThrowOnError>): RequestResult<GetPoolsResponses, GetPoolsErrors, ThrowOnError> {\n return (options?.client ?? this.client).get<GetPoolsResponses, GetPoolsErrors, ThrowOnError>({ url: '/pools', ...options });\n }\n \n /**\n * Groups\n *\n * Returns a paginated list of pool groups\n */\n public getGroups<ThrowOnError extends boolean = false>(options?: Options<GetPoolsGroupsData, ThrowOnError>): RequestResult<GetPoolsGroupsResponses, GetPoolsGroupsErrors, ThrowOnError> {\n return (options?.client ?? this.client).get<GetPoolsGroupsResponses, GetPoolsGroupsErrors, ThrowOnError>({ url: '/pools/groups', ...options });\n }\n \n /**\n * Group\n *\n * Returns a paginated list of pools that belong to a specific pool group\n */\n public getGroup<ThrowOnError extends boolean = false>(options: Options<GetPoolsGroupsByLexicalOrderMintsData, ThrowOnError>): RequestResult<GetPoolsGroupsByLexicalOrderMintsResponses, GetPoolsGroupsByLexicalOrderMintsErrors, ThrowOnError> {\n return (options.client ?? this.client).get<GetPoolsGroupsByLexicalOrderMintsResponses, GetPoolsGroupsByLexicalOrderMintsErrors, ThrowOnError>({ url: '/pools/groups/{lexical_order_mints}', ...options });\n }\n \n /**\n * Pool\n *\n * Returns metadata and current state for a single pool\n */\n public getPool<ThrowOnError extends boolean = false>(options: Options<GetPoolsByAddressData, ThrowOnError>): RequestResult<GetPoolsByAddressResponses, GetPoolsByAddressErrors, ThrowOnError> {\n return (options.client ?? this.client).get<GetPoolsByAddressResponses, GetPoolsByAddressErrors, ThrowOnError>({ url: '/pools/{address}', ...options });\n }\n \n /**\n * OHLCV\n *\n * Returns OHLCV candles for a single pool over a time range\n *\n * **Notes**\n * - If both `start_time` and `end_time` are provided, candles are returned in the range `[start_time, end_time]`\n * - If only one of `start_time` or `end_time` is provided, the missing bound is inferred using the selected `timeframe`\n * - If neither is provided, a default range is used based on `timeframe`\n */\n public getOhlcv<ThrowOnError extends boolean = false>(options: Options<GetPoolsByAddressOhlcvData, ThrowOnError>): RequestResult<GetPoolsByAddressOhlcvResponses, GetPoolsByAddressOhlcvErrors, ThrowOnError> {\n return (options.client ?? this.client).get<GetPoolsByAddressOhlcvResponses, GetPoolsByAddressOhlcvErrors, ThrowOnError>({ url: '/pools/{address}/ohlcv', ...options });\n }\n \n /**\n * Historical Volume\n *\n * Returns historical volume for a pool aggregated into time buckets\n *\n * **Notes**\n * - If both `start_time` and `end_time` are provided, the result covers the range `[start_time, end_time]`\n * - If only one of `start_time` or `end_time` is provided, the missing bound is inferred using the selected `timeframe`\n * - If neither is provided, a default range is used based on `timeframe`\n */\n public getHistoricalVolume<ThrowOnError extends boolean = false>(options: Options<GetPoolsByAddressVolumeHistoryData, ThrowOnError>): RequestResult<GetPoolsByAddressVolumeHistoryResponses, GetPoolsByAddressVolumeHistoryErrors, ThrowOnError> {\n return (options.client ?? this.client).get<GetPoolsByAddressVolumeHistoryResponses, GetPoolsByAddressVolumeHistoryErrors, ThrowOnError>({ url: '/pools/{address}/volume/history', ...options });\n }\n}\n\nexport class Stats extends HeyApiClient {\n /**\n * Protocol Overview\n *\n * Returns aggregated protocol-level metrics across all pools\n */\n public getProtocolOverview<ThrowOnError extends boolean = false>(options?: Options<GetStatsProtocolMetricsData, ThrowOnError>): RequestResult<GetStatsProtocolMetricsResponses, GetStatsProtocolMetricsErrors, ThrowOnError> {\n return (options?.client ?? this.client).get<GetStatsProtocolMetricsResponses, GetStatsProtocolMetricsErrors, ThrowOnError>({ url: '/stats/protocol_metrics', ...options });\n }\n}\n\nexport class DammV2Api extends HeyApiClient {\n public static readonly __registry: HeyApiRegistry<DammV2Api> = new HeyApiRegistry<DammV2Api>();\n \n constructor(args?: {\n client?: Client;\n key?: string;\n }) {\n super(args);\n DammV2Api.__registry.set(this, args?.key);\n }\n \n private _pools?: Pools;\n get pools(): Pools {\n return this._pools ??= new Pools({ client: this.client });\n }\n \n private _stats?: Stats;\n get stats(): Stats {\n return this._stats ??= new Stats({ client: this.client });\n }\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { ArrayStyle, ObjectStyle, SerializerOptions } from './pathSerializer.gen';\n\nexport type QuerySerializer = (query: Record<string, unknown>) => string;\n\nexport type BodySerializer = (body: unknown) => unknown;\n\ntype QuerySerializerOptionsObject = {\n allowReserved?: boolean;\n array?: Partial<SerializerOptions<ArrayStyle>>;\n object?: Partial<SerializerOptions<ObjectStyle>>;\n};\n\nexport type QuerySerializerOptions = QuerySerializerOptionsObject & {\n /**\n * Per-parameter serialization overrides. When provided, these settings\n * override the global array/object settings for specific parameter names.\n */\n parameters?: Record<string, QuerySerializerOptionsObject>;\n};\n\nconst serializeFormDataPair = (data: FormData, key: string, value: unknown): void => {\n if (typeof value === 'string' || value instanceof Blob) {\n data.append(key, value);\n } else if (value instanceof Date) {\n data.append(key, value.toISOString());\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nconst serializeUrlSearchParamsPair = (data: URLSearchParams, key: string, value: unknown): void => {\n if (typeof value === 'string') {\n data.append(key, value);\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nexport const formDataBodySerializer = {\n bodySerializer: (body: unknown): FormData => {\n const data = new FormData();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeFormDataPair(data, key, v));\n } else {\n serializeFormDataPair(data, key, value);\n }\n });\n\n return data;\n },\n};\n\nexport const jsonBodySerializer = {\n bodySerializer: (body: unknown): string =>\n JSON.stringify(body, (_key, value) => (typeof value === 'bigint' ? value.toString() : value)),\n};\n\nexport const urlSearchParamsBodySerializer = {\n bodySerializer: (body: unknown): string => {\n const data = new URLSearchParams();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeUrlSearchParamsPair(data, key, v));\n } else {\n serializeUrlSearchParamsPair(data, key, value);\n }\n });\n\n return data.toString();\n },\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Config } from './types.gen';\n\nexport type ServerSentEventsOptions<TData = unknown> = Omit<RequestInit, 'method'> &\n Pick<Config, 'method' | 'responseTransformer' | 'responseValidator'> & {\n /**\n * Fetch API implementation. You can use this option to provide a custom\n * fetch instance.\n *\n * @default globalThis.fetch\n */\n fetch?: typeof fetch;\n /**\n * Implementing clients can call request interceptors inside this hook.\n */\n onRequest?: (url: string, init: RequestInit) => Promise<Request>;\n /**\n * Callback invoked when a network or parsing error occurs during streaming.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param error The error that occurred.\n */\n onSseError?: (error: unknown) => void;\n /**\n * Callback invoked when an event is streamed from the server.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param event Event streamed from the server.\n * @returns Nothing (void).\n */\n onSseEvent?: (event: StreamEvent<TData>) => void;\n serializedBody?: RequestInit['body'];\n /**\n * Default retry delay in milliseconds.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 3000\n */\n sseDefaultRetryDelay?: number;\n /**\n * Maximum number of retry attempts before giving up.\n */\n sseMaxRetryAttempts?: number;\n /**\n * Maximum retry delay in milliseconds.\n *\n * Applies only when exponential backoff is used.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 30000\n */\n sseMaxRetryDelay?: number;\n /**\n * Optional sleep function for retry backoff.\n *\n * Defaults to using `setTimeout`.\n */\n sseSleepFn?: (ms: number) => Promise<void>;\n url: string;\n };\n\nexport interface StreamEvent<TData = unknown> {\n data: TData;\n event?: string;\n id?: string;\n retry?: number;\n}\n\nexport type ServerSentEventsResult<TData = unknown, TReturn = void, TNext = unknown> = {\n stream: AsyncGenerator<\n TData extends Record<string, unknown> ? TData[keyof TData] : TData,\n TReturn,\n TNext\n >;\n};\n\nexport function createSseClient<TData = unknown>({\n onRequest,\n onSseError,\n onSseEvent,\n responseTransformer,\n responseValidator,\n sseDefaultRetryDelay,\n sseMaxRetryAttempts,\n sseMaxRetryDelay,\n sseSleepFn,\n url,\n ...options\n}: ServerSentEventsOptions): ServerSentEventsResult<TData> {\n let lastEventId: string | undefined;\n\n const sleep = sseSleepFn ?? ((ms: number) => new Promise((resolve) => setTimeout(resolve, ms)));\n\n const createStream = async function* () {\n let retryDelay: number = sseDefaultRetryDelay ?? 3000;\n let attempt = 0;\n const signal = options.signal ?? new AbortController().signal;\n\n while (true) {\n if (signal.aborted) break;\n\n attempt++;\n\n const headers =\n options.headers instanceof Headers\n ? options.headers\n : new Headers(options.headers as Record<string, string> | undefined);\n\n if (lastEventId !== undefined) {\n headers.set('Last-Event-ID', lastEventId);\n }\n\n try {\n const requestInit: RequestInit = {\n redirect: 'follow',\n ...options,\n body: options.serializedBody,\n headers,\n signal,\n };\n let request = new Request(url, requestInit);\n if (onRequest) {\n request = await onRequest(url, requestInit);\n }\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = options.fetch ?? globalThis.fetch;\n const response = await _fetch(request);\n\n if (!response.ok) throw new Error(`SSE failed: ${response.status} ${response.statusText}`);\n\n if (!response.body) throw new Error('No body in SSE response');\n\n const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();\n\n let buffer = '';\n\n const abortHandler = () => {\n try {\n reader.cancel();\n } catch {\n // noop\n }\n };\n\n signal.addEventListener('abort', abortHandler);\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += value;\n buffer = buffer.replace(/\\r\\n?/g, '\\n'); // normalize line endings\n\n const chunks = buffer.split('\\n\\n');\n buffer = chunks.pop() ?? '';\n\n for (const chunk of chunks) {\n const lines = chunk.split('\\n');\n const dataLines: Array<string> = [];\n let eventName: string | undefined;\n\n for (const line of lines) {\n if (line.startsWith('data:')) {\n dataLines.push(line.replace(/^data:\\s*/, ''));\n } else if (line.startsWith('event:')) {\n eventName = line.replace(/^event:\\s*/, '');\n } else if (line.startsWith('id:')) {\n lastEventId = line.replace(/^id:\\s*/, '');\n } else if (line.startsWith('retry:')) {\n const parsed = Number.parseInt(line.replace(/^retry:\\s*/, ''), 10);\n if (!Number.isNaN(parsed)) {\n retryDelay = parsed;\n }\n }\n }\n\n let data: unknown;\n let parsedJson = false;\n\n if (dataLines.length) {\n const rawData = dataLines.join('\\n');\n try {\n data = JSON.parse(rawData);\n parsedJson = true;\n } catch {\n data = rawData;\n }\n }\n\n if (parsedJson) {\n if (responseValidator) {\n await responseValidator(data);\n }\n\n if (responseTransformer) {\n data = await responseTransformer(data);\n }\n }\n\n onSseEvent?.({\n data,\n event: eventName,\n id: lastEventId,\n retry: retryDelay,\n });\n\n if (dataLines.length) {\n yield data as any;\n }\n }\n }\n } finally {\n signal.removeEventListener('abort', abortHandler);\n reader.releaseLock();\n }\n\n break; // exit loop on normal completion\n } catch (error) {\n // connection failed or aborted; retry after delay\n onSseError?.(error);\n\n if (sseMaxRetryAttempts !== undefined && attempt >= sseMaxRetryAttempts) {\n break; // stop after firing error\n }\n\n // exponential backoff: double retry each attempt, cap at 30s\n const backoff = Math.min(retryDelay * 2 ** (attempt - 1), sseMaxRetryDelay ?? 30000);\n await sleep(backoff);\n }\n }\n };\n\n const stream = createStream();\n\n return { stream };\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\ninterface SerializeOptions<T> extends SerializePrimitiveOptions, SerializerOptions<T> {}\n\ninterface SerializePrimitiveOptions {\n allowReserved?: boolean;\n name: string;\n}\n\nexport interface SerializerOptions<T> {\n /**\n * @default true\n */\n explode: boolean;\n style: T;\n}\n\nexport type ArrayStyle = 'form' | 'spaceDelimited' | 'pipeDelimited';\nexport type ArraySeparatorStyle = ArrayStyle | MatrixStyle;\ntype MatrixStyle = 'label' | 'matrix' | 'simple';\nexport type ObjectStyle = 'form' | 'deepObject';\ntype ObjectSeparatorStyle = ObjectStyle | MatrixStyle;\n\ninterface SerializePrimitiveParam extends SerializePrimitiveOptions {\n value: string;\n}\n\nexport const separatorArrayExplode = (style: ArraySeparatorStyle): '.' | ';' | ',' | '&' => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const separatorArrayNoExplode = (style: ArraySeparatorStyle): ',' | '|' | '%20' => {\n switch (style) {\n case 'form':\n return ',';\n case 'pipeDelimited':\n return '|';\n case 'spaceDelimited':\n return '%20';\n default:\n return ',';\n }\n};\n\nexport const separatorObjectExplode = (style: ObjectSeparatorStyle): '.' | ';' | ',' | '&' => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const serializeArrayParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n}: SerializeOptions<ArraySeparatorStyle> & {\n value: unknown[];\n}): string => {\n if (!explode) {\n const joinedValues = (\n allowReserved ? value : value.map((v) => encodeURIComponent(v as string))\n ).join(separatorArrayNoExplode(style));\n switch (style) {\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n case 'simple':\n return joinedValues;\n default:\n return `${name}=${joinedValues}`;\n }\n }\n\n const separator = separatorArrayExplode(style);\n const joinedValues = value\n .map((v) => {\n if (style === 'label' || style === 'simple') {\n return allowReserved ? v : encodeURIComponent(v as string);\n }\n\n return serializePrimitiveParam({\n allowReserved,\n name,\n value: v as string,\n });\n })\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n\nexport const serializePrimitiveParam = ({\n allowReserved,\n name,\n value,\n}: SerializePrimitiveParam): string => {\n if (value === undefined || value === null) {\n return '';\n }\n\n if (typeof value === 'object') {\n throw new Error(\n 'Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.',\n );\n }\n\n return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;\n};\n\nexport const serializeObjectParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n valueOnly,\n}: SerializeOptions<ObjectSeparatorStyle> & {\n value: Record<string, unknown> | Date;\n valueOnly?: boolean;\n}): string => {\n if (value instanceof Date) {\n return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;\n }\n\n if (style !== 'deepObject' && !explode) {\n let values: string[] = [];\n Object.entries(value).forEach(([key, v]) => {\n values = [...values, key, allowReserved ? (v as string) : encodeURIComponent(v as string)];\n });\n const joinedValues = values.join(',');\n switch (style) {\n case 'form':\n return `${name}=${joinedValues}`;\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n default:\n return joinedValues;\n }\n }\n\n const separator = separatorObjectExplode(style);\n const joinedValues = Object.entries(value)\n .map(([key, v]) =>\n serializePrimitiveParam({\n allowReserved,\n name: style === 'deepObject' ? `${name}[${key}]` : key,\n value: v as string,\n }),\n )\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { BodySerializer, QuerySerializer } from './bodySerializer.gen';\nimport {\n type ArraySeparatorStyle,\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from './pathSerializer.gen';\n\nexport interface PathSerializer {\n path: Record<string, unknown>;\n url: string;\n}\n\nexport const PATH_PARAM_RE: RegExp = /\\{[^{}]+\\}/g;\n\nexport const defaultPathSerializer = ({ path, url: _url }: PathSerializer): string => {\n let url = _url;\n const matches = _url.match(PATH_PARAM_RE);\n if (matches) {\n for (const match of matches) {\n let explode = false;\n let name = match.substring(1, match.length - 1);\n let style: ArraySeparatorStyle = 'simple';\n\n if (name.endsWith('*')) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n\n if (name.startsWith('.')) {\n name = name.substring(1);\n style = 'label';\n } else if (name.startsWith(';')) {\n name = name.substring(1);\n style = 'matrix';\n }\n\n const value = path[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n url = url.replace(match, serializeArrayParam({ explode, name, style, value }));\n continue;\n }\n\n if (typeof value === 'object') {\n url = url.replace(\n match,\n serializeObjectParam({\n explode,\n name,\n style,\n value: value as Record<string, unknown>,\n valueOnly: true,\n }),\n );\n continue;\n }\n\n if (style === 'matrix') {\n url = url.replace(\n match,\n `;${serializePrimitiveParam({\n name,\n value: value as string,\n })}`,\n );\n continue;\n }\n\n const replaceValue = encodeURIComponent(\n style === 'label' ? `.${value as string}` : (value as string),\n );\n url = url.replace(match, replaceValue);\n }\n }\n return url;\n};\n\nexport const getUrl = ({\n baseUrl,\n path,\n query,\n querySerializer,\n url: _url,\n}: {\n baseUrl?: string;\n path?: Record<string, unknown>;\n query?: Record<string, unknown>;\n querySerializer: QuerySerializer;\n url: string;\n}): string => {\n const pathUrl = _url.startsWith('/') ? _url : `/${_url}`;\n let url = (baseUrl ?? '') + pathUrl;\n if (path) {\n url = defaultPathSerializer({ path, url });\n }\n let search = query ? querySerializer(query) : '';\n if (search.startsWith('?')) {\n search = search.substring(1);\n }\n if (search) {\n url += `?${search}`;\n }\n return url;\n};\n\nexport function getValidRequestBody(options: {\n body?: unknown;\n bodySerializer?: BodySerializer | null;\n serializedBody?: unknown;\n}): unknown {\n const hasBody = options.body !== undefined;\n const isSerializedBody = hasBody && options.bodySerializer;\n\n if (isSerializedBody) {\n if ('serializedBody' in options) {\n const hasSerializedBody =\n options.serializedBody !== undefined && options.serializedBody !== '';\n\n return hasSerializedBody ? options.serializedBody : null;\n }\n\n // not all clients implement a serializedBody property (i.e., client-axios)\n return options.body !== '' ? options.body : null;\n }\n\n // plain/text body\n if (hasBody) {\n return options.body;\n }\n\n // no body was provided\n return undefined;\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nexport type AuthToken = string | undefined;\n\nexport interface Auth {\n /**\n * Which part of the request do we use to send the auth?\n *\n * @default 'header'\n */\n in?: 'header' | 'query' | 'cookie';\n /**\n * A unique identifier for the security scheme.\n *\n * Defined only when there are multiple security schemes whose `Auth`\n * shape would otherwise be identical.\n */\n key?: string;\n /**\n * Header or query parameter name.\n *\n * @default 'Authorization'\n */\n name?: string;\n scheme?: 'basic' | 'bearer';\n type: 'apiKey' | 'http';\n}\n\nexport const getAuthToken = async (\n auth: Auth,\n callback: ((auth: Auth) => Promise<AuthToken> | AuthToken) | AuthToken,\n): Promise<string | undefined> => {\n const token = typeof callback === 'function' ? await callback(auth) : callback;\n\n if (!token) {\n return;\n }\n\n if (auth.scheme === 'bearer') {\n return `Bearer ${token}`;\n }\n\n if (auth.scheme === 'basic') {\n return `Basic ${btoa(token)}`;\n }\n\n return token;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { getAuthToken } from '../core/auth.gen';\nimport type { QuerySerializerOptions } from '../core/bodySerializer.gen';\nimport { jsonBodySerializer } from '../core/bodySerializer.gen';\nimport {\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from '../core/pathSerializer.gen';\nimport { getUrl } from '../core/utils.gen';\nimport type { Client, ClientOptions, Config, RequestOptions } from './types.gen';\n\nexport const createQuerySerializer = <T = unknown>({\n parameters = {},\n ...args\n}: QuerySerializerOptions = {}): ((queryParams: T) => string) => {\n const querySerializer = (queryParams: T): string => {\n const search: string[] = [];\n if (queryParams && typeof queryParams === 'object') {\n for (const name in queryParams) {\n const value = queryParams[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n const options = parameters[name] || args;\n\n if (Array.isArray(value)) {\n const serializedArray = serializeArrayParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'form',\n value,\n ...options.array,\n });\n if (serializedArray) search.push(serializedArray);\n } else if (typeof value === 'object') {\n const serializedObject = serializeObjectParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'deepObject',\n value: value as Record<string, unknown>,\n ...options.object,\n });\n if (serializedObject) search.push(serializedObject);\n } else {\n const serializedPrimitive = serializePrimitiveParam({\n allowReserved: options.allowReserved,\n name,\n value: value as string,\n });\n if (serializedPrimitive) search.push(serializedPrimitive);\n }\n }\n }\n return search.join('&');\n };\n return querySerializer;\n};\n\n/**\n * Infers parseAs value from provided Content-Type header.\n */\nexport const getParseAs = (contentType: string | null): Exclude<Config['parseAs'], 'auto'> => {\n if (!contentType) {\n // If no Content-Type header is provided, the best we can do is return the raw response body,\n // which is effectively the same as the 'stream' option.\n return 'stream';\n }\n\n const cleanContent = contentType.split(';')[0]?.trim();\n\n if (!cleanContent) {\n return;\n }\n\n if (cleanContent.startsWith('application/json') || cleanContent.endsWith('+json')) {\n return 'json';\n }\n\n if (cleanContent === 'multipart/form-data') {\n return 'formData';\n }\n\n if (\n ['application/', 'audio/', 'image/', 'video/'].some((type) => cleanContent.startsWith(type))\n ) {\n return 'blob';\n }\n\n if (cleanContent.startsWith('text/')) {\n return 'text';\n }\n\n return;\n};\n\nconst checkForExistence = (\n options: Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n },\n name?: string,\n): boolean => {\n if (!name) {\n return false;\n }\n if (\n options.headers.has(name) ||\n options.query?.[name] ||\n options.headers.get('Cookie')?.includes(`${name}=`)\n ) {\n return true;\n }\n return false;\n};\n\nexport async function setAuthParams(\n options: Pick<RequestOptions, 'auth' | 'query' | 'security'> & {\n headers: Headers;\n },\n): Promise<void> {\n for (const auth of options.security ?? []) {\n if (checkForExistence(options, auth.name)) {\n continue;\n }\n\n const token = await getAuthToken(auth, options.auth);\n\n if (!token) {\n continue;\n }\n\n const name = auth.name ?? 'Authorization';\n\n switch (auth.in) {\n case 'query':\n if (!options.query) {\n options.query = {};\n }\n options.query[name] = token;\n break;\n case 'cookie':\n options.headers.append('Cookie', `${name}=${token}`);\n break;\n case 'header':\n default:\n options.headers.set(name, token);\n break;\n }\n }\n}\n\nexport const buildUrl: Client['buildUrl'] = (options) =>\n getUrl({\n baseUrl: options.baseUrl as string,\n path: options.path,\n query: options.query,\n querySerializer:\n typeof options.querySerializer === 'function'\n ? options.querySerializer\n : createQuerySerializer(options.querySerializer),\n url: options.url,\n });\n\nexport const mergeConfigs = (a: Config, b: Config): Config => {\n const config = { ...a, ...b };\n if (config.baseUrl?.endsWith('/')) {\n config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);\n }\n config.headers = mergeHeaders(a.headers, b.headers);\n return config;\n};\n\nconst headersEntries = (headers: Headers): Array<[string, string]> => {\n const entries: Array<[string, string]> = [];\n headers.forEach((value, key) => {\n entries.push([key, value]);\n });\n return entries;\n};\n\nexport const mergeHeaders = (\n ...headers: Array<Required<Config>['headers'] | undefined>\n): Headers => {\n const mergedHeaders = new Headers();\n for (const header of headers) {\n if (!header) {\n continue;\n }\n\n const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header);\n\n for (const [key, value] of iterator) {\n if (value === null) {\n mergedHeaders.delete(key);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n mergedHeaders.append(key, v as string);\n }\n } else if (value !== undefined) {\n // assume object headers are meant to be JSON stringified, i.e., their\n // content value in OpenAPI specification is 'application/json'\n mergedHeaders.set(\n key,\n typeof value === 'object' ? JSON.stringify(value) : (value as string),\n );\n }\n }\n }\n return mergedHeaders;\n};\n\ntype ErrInterceptor<Err, Res, Req, Options> = (\n error: Err,\n /** response may be undefined due to a network error where no response object is produced */\n response: Res | undefined,\n /** request may be undefined, because error may be from building the request object itself */\n request: Req | undefined,\n options: Options,\n) => Err | Promise<Err>;\n\ntype ReqInterceptor<Req, Options> = (request: Req, options: Options) => Req | Promise<Req>;\n\ntype ResInterceptor<Res, Req, Options> = (\n response: Res,\n request: Req,\n options: Options,\n) => Res | Promise<Res>;\n\nclass Interceptors<Interceptor> {\n fns: Array<Interceptor | null> = [];\n\n clear(): void {\n this.fns = [];\n }\n\n eject(id: number | Interceptor): void {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = null;\n }\n }\n\n exists(id: number | Interceptor): boolean {\n const index = this.getInterceptorIndex(id);\n return Boolean(this.fns[index]);\n }\n\n getInterceptorIndex(id: number | Interceptor): number {\n if (typeof id === 'number') {\n return this.fns[id] ? id : -1;\n }\n return this.fns.indexOf(id);\n }\n\n update(id: number | Interceptor, fn: Interceptor): number | Interceptor | false {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = fn;\n return id;\n }\n return false;\n }\n\n use(fn: Interceptor): number {\n this.fns.push(fn);\n return this.fns.length - 1;\n }\n}\n\nexport interface Middleware<Req, Res, Err, Options> {\n error: Interceptors<ErrInterceptor<Err, Res, Req, Options>>;\n request: Interceptors<ReqInterceptor<Req, Options>>;\n response: Interceptors<ResInterceptor<Res, Req, Options>>;\n}\n\nexport const createInterceptors = <Req, Res, Err, Options>(): Middleware<\n Req,\n Res,\n Err,\n Options\n> => ({\n error: new Interceptors<ErrInterceptor<Err, Res, Req, Options>>(),\n request: new Interceptors<ReqInterceptor<Req, Options>>(),\n response: new Interceptors<ResInterceptor<Res, Req, Options>>(),\n});\n\nconst defaultQuerySerializer = createQuerySerializer({\n allowReserved: false,\n array: {\n explode: true,\n style: 'form',\n },\n object: {\n explode: true,\n style: 'deepObject',\n },\n});\n\nconst defaultHeaders = {\n 'Content-Type': 'application/json',\n};\n\nexport const createConfig = <T extends ClientOptions = ClientOptions>(\n override: Config<Omit<ClientOptions, keyof T> & T> = {},\n): Config<Omit<ClientOptions, keyof T> & T> => ({\n ...jsonBodySerializer,\n headers: defaultHeaders,\n parseAs: 'auto',\n querySerializer: defaultQuerySerializer,\n ...override,\n});\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { createSseClient } from '../core/serverSentEvents.gen';\nimport type { HttpMethod } from '../core/types.gen';\nimport { getValidRequestBody } from '../core/utils.gen';\nimport type { Client, Config, RequestOptions, ResolvedRequestOptions } from './types.gen';\nimport {\n buildUrl,\n createConfig,\n createInterceptors,\n getParseAs,\n mergeConfigs,\n mergeHeaders,\n setAuthParams,\n} from './utils.gen';\n\ntype ReqInit = Omit<RequestInit, 'body' | 'headers'> & {\n body?: any;\n headers: ReturnType<typeof mergeHeaders>;\n};\n\nexport const createClient = (config: Config = {}): Client => {\n let _config = mergeConfigs(createConfig(), config);\n\n const getConfig = (): Config => ({ ..._config });\n\n const setConfig = (config: Config): Config => {\n _config = mergeConfigs(_config, config);\n return getConfig();\n };\n\n const interceptors = createInterceptors<Request, Response, unknown, ResolvedRequestOptions>();\n\n const beforeRequest = async <\n TData = unknown,\n TResponseStyle extends 'data' | 'fields' = 'fields',\n ThrowOnError extends boolean = boolean,\n Url extends string = string,\n >(\n options: RequestOptions<TData, TResponseStyle, ThrowOnError, Url>,\n ) => {\n const opts = {\n ..._config,\n ...options,\n fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,\n headers: mergeHeaders(_config.headers, options.headers),\n serializedBody: undefined as string | undefined,\n };\n\n if (opts.security) {\n await setAuthParams(opts);\n }\n\n if (opts.requestValidator) {\n await opts.requestValidator(opts);\n }\n\n if (opts.body !== undefined && opts.bodySerializer) {\n opts.serializedBody = opts.bodySerializer(opts.body) as string | undefined;\n }\n\n // remove Content-Type header if body is empty to avoid sending invalid requests\n if (opts.body === undefined || opts.serializedBody === '') {\n opts.headers.delete('Content-Type');\n }\n\n const resolvedOpts = opts as typeof opts &\n ResolvedRequestOptions<TResponseStyle, ThrowOnError, Url>;\n const url = buildUrl(resolvedOpts);\n\n return { opts: resolvedOpts, url };\n };\n\n const request: Client['request'] = async (options) => {\n const throwOnError = options.throwOnError ?? _config.throwOnError;\n const responseStyle = options.responseStyle ?? _config.responseStyle;\n\n let request: Request | undefined;\n let response: Response | undefined;\n\n try {\n const { opts, url } = await beforeRequest(options);\n const requestInit: ReqInit = {\n redirect: 'follow',\n ...opts,\n body: getValidRequestBody(opts),\n };\n\n request = new Request(url, requestInit);\n\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = opts.fetch!;\n\n response = await _fetch(request);\n\n for (const fn of interceptors.response.fns) {\n if (fn) {\n response = await fn(response, request, opts);\n }\n }\n\n const result = {\n request,\n response,\n };\n\n if (response.ok) {\n const parseAs =\n (opts.parseAs === 'auto'\n ? getParseAs(response.headers.get('Content-Type'))\n : opts.parseAs) ?? 'json';\n\n if (response.status === 204 || response.headers.get('Content-Length') === '0') {\n let emptyData: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'text':\n emptyData = await response[parseAs]();\n break;\n case 'formData':\n emptyData = new FormData();\n break;\n case 'stream':\n emptyData = response.body;\n break;\n case 'json':\n default:\n emptyData = {};\n break;\n }\n return opts.responseStyle === 'data'\n ? emptyData\n : {\n data: emptyData,\n ...result,\n };\n }\n\n let data: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'formData':\n case 'text':\n data = await response[parseAs]();\n break;\n case 'json': {\n // Some servers return 200 with no Content-Length and empty body.\n // response.json() would throw; read as text and parse if non-empty.\n const text = await response.text();\n data = text ? JSON.parse(text) : {};\n break;\n }\n case 'stream':\n return opts.responseStyle === 'data'\n ? response.body\n : {\n data: response.body,\n ...result,\n };\n }\n\n if (parseAs === 'json') {\n if (opts.responseValidator) {\n await opts.responseValidator(data);\n }\n\n if (opts.responseTransformer) {\n data = await opts.responseTransformer(data);\n }\n }\n\n return opts.responseStyle === 'data'\n ? data\n : {\n data,\n ...result,\n };\n }\n\n const textError = await response.text();\n let jsonError: unknown;\n\n try {\n jsonError = JSON.parse(textError);\n } catch {\n // noop\n }\n\n throw jsonError ?? textError;\n } catch (error) {\n let finalError = error;\n\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = await fn(finalError, response, request, options as ResolvedRequestOptions);\n }\n }\n\n finalError = finalError || {};\n\n if (throwOnError) {\n throw finalError;\n }\n\n // TODO: we probably want to return error and improve types\n return responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n request,\n response,\n };\n }\n };\n\n const makeMethodFn = (method: Uppercase<HttpMethod>) => (options: RequestOptions) =>\n request({ ...options, method });\n\n const makeSseFn = (method: Uppercase<HttpMethod>) => async (options: RequestOptions) => {\n const { opts, url } = await beforeRequest(options);\n return createSseClient({\n ...opts,\n body: opts.body as BodyInit | null | undefined,\n method,\n onRequest: async (url, init) => {\n let request = new Request(url, init);\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n return request;\n },\n serializedBody: getValidRequestBody(opts) as BodyInit | null | undefined,\n url,\n });\n };\n\n const _buildUrl: Client['buildUrl'] = (options) => buildUrl({ ..._config, ...options });\n\n return {\n buildUrl: _buildUrl,\n connect: makeMethodFn('CONNECT'),\n delete: makeMethodFn('DELETE'),\n get: makeMethodFn('GET'),\n getConfig,\n head: makeMethodFn('HEAD'),\n interceptors,\n options: makeMethodFn('OPTIONS'),\n patch: makeMethodFn('PATCH'),\n post: makeMethodFn('POST'),\n put: makeMethodFn('PUT'),\n request,\n setConfig,\n sse: {\n connect: makeSseFn('CONNECT'),\n delete: makeSseFn('DELETE'),\n get: makeSseFn('GET'),\n head: makeSseFn('HEAD'),\n options: makeSseFn('OPTIONS'),\n patch: makeSseFn('PATCH'),\n post: makeSseFn('POST'),\n put: makeSseFn('PUT'),\n trace: makeSseFn('TRACE'),\n },\n trace: makeMethodFn('TRACE'),\n } as Client;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { type Client, type ClientOptions, type Config, createClient, createConfig } from './client';\nimport type { ClientOptions as ClientOptions2 } from './types.gen';\n\n/**\n * The `createClientConfig()` function will be called on client initialization\n * and the returned object will become the client's initial configuration.\n *\n * You may want to initialize your client this way instead of calling\n * `setConfig()`. This is useful for example if you're using Next.js\n * to ensure your client always has the correct values.\n */\nexport type CreateClientConfig<T extends ClientOptions = ClientOptions2> = (override?: Config<ClientOptions & T>) => Config<Required<ClientOptions> & T>;\n\nexport const client: Client = createClient(createConfig<ClientOptions2>({ baseUrl: 'https://dlmm.datapi.meteora.ag' }));\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Client, ClientMeta, Options as Options2, RequestResult, TDataShape } from './client';\nimport { client } from './client.gen';\nimport type { GetPoolsByAddressData, GetPoolsByAddressErrors, GetPoolsByAddressOhlcvData, GetPoolsByAddressOhlcvErrors, GetPoolsByAddressOhlcvResponses, GetPoolsByAddressResponses, GetPoolsByAddressVolumeHistoryData, GetPoolsByAddressVolumeHistoryErrors, GetPoolsByAddressVolumeHistoryResponses, GetPoolsData, GetPoolsErrors, GetPoolsGroupsByLexicalOrderMintsData, GetPoolsGroupsByLexicalOrderMintsErrors, GetPoolsGroupsByLexicalOrderMintsResponses, GetPoolsGroupsData, GetPoolsGroupsErrors, GetPoolsGroupsResponses, GetPoolsResponses, GetPortfolioData, GetPortfolioOpenData, GetPortfolioOpenErrors, GetPortfolioOpenResponses, GetPortfolioResponses, GetPortfolioTotalData, GetPortfolioTotalErrors, GetPortfolioTotalResponses, GetPositionsByAddressHistoricalData, GetPositionsByAddressHistoricalResponses, GetPositionsByPoolAddressPnlData, GetPositionsByPoolAddressPnlResponses, GetStatsProtocolMetricsData, GetStatsProtocolMetricsErrors, GetStatsProtocolMetricsResponses, GetWalletsByWalletLimitOrdersClosedPoolsByPoolAddressData, GetWalletsByWalletLimitOrdersClosedPoolsByPoolAddressErrors, GetWalletsByWalletLimitOrdersClosedPoolsByPoolAddressResponses, GetWalletsByWalletLimitOrdersClosedPoolsData, GetWalletsByWalletLimitOrdersClosedPoolsErrors, GetWalletsByWalletLimitOrdersClosedPoolsResponses, GetWalletsByWalletLimitOrdersOpenPoolsByPoolAddressData, GetWalletsByWalletLimitOrdersOpenPoolsByPoolAddressErrors, GetWalletsByWalletLimitOrdersOpenPoolsByPoolAddressResponses, GetWalletsByWalletLimitOrdersOpenPoolsData, GetWalletsByWalletLimitOrdersOpenPoolsErrors, GetWalletsByWalletLimitOrdersOpenPoolsResponses, GetWalletsByWalletLimitOrdersPoolsByPoolAddressBonusClaimedData, GetWalletsByWalletLimitOrdersPoolsByPoolAddressBonusClaimedErrors, GetWalletsByWalletLimitOrdersPoolsByPoolAddressBonusClaimedResponses, GetWalletsByWalletLimitOrdersSummaryData, GetWalletsByWalletLimitOrdersSummaryErrors, GetWalletsByWalletLimitOrdersSummaryResponses, GetWalletsByWalletPoolsByPoolAddressTotalClaimsData, GetWalletsByWalletPoolsByPoolAddressTotalClaimsErrors, GetWalletsByWalletPoolsByPoolAddressTotalClaimsResponses } from './types.gen';\n\nexport type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean, TResponse = unknown> = Options2<TData, ThrowOnError, TResponse> & {\n /**\n * You can provide a client instance returned by `createClient()` instead of\n * individual options. This might be also useful if you want to implement a\n * custom client.\n */\n client?: Client;\n /**\n * You can pass arbitrary values through the `meta` object. This can be\n * used to access values that aren't defined as part of the SDK function.\n */\n meta?: keyof ClientMeta extends never ? Record<string, unknown> : ClientMeta;\n};\n\nclass HeyApiClient {\n protected client: Client;\n \n constructor(args?: {\n client?: Client;\n }) {\n this.client = args?.client ?? client;\n }\n}\n\nclass HeyApiRegistry<T> {\n private readonly defaultKey = 'default';\n \n private readonly instances: Map<string, T> = new Map();\n \n get(key?: string): T {\n const instance = this.instances.get(key ?? this.defaultKey);\n if (!instance) {\n throw new Error(`No SDK client found. Create one with \"new DlmmApi()\" to fix this error.`);\n }\n return instance;\n }\n \n set(value: T, key?: string): void {\n this.instances.set(key ?? this.defaultKey, value);\n }\n}\n\nexport class Pools extends HeyApiClient {\n /**\n * Pools\n *\n * Returns a paginated list of pools\n */\n public getPools<ThrowOnError extends boolean = false>(options?: Options<GetPoolsData, ThrowOnError>): RequestResult<GetPoolsResponses, GetPoolsErrors, ThrowOnError> {\n return (options?.client ?? this.client).get<GetPoolsResponses, GetPoolsErrors, ThrowOnError>({ url: '/pools', ...options });\n }\n \n /**\n * Groups\n *\n * Returns a paginated list of pool groups\n */\n public getGroups<ThrowOnError extends boolean = false>(options?: Options<GetPoolsGroupsData, ThrowOnError>): RequestResult<GetPoolsGroupsResponses, GetPoolsGroupsErrors, ThrowOnError> {\n return (options?.client ?? this.client).get<GetPoolsGroupsResponses, GetPoolsGroupsErrors, ThrowOnError>({ url: '/pools/groups', ...options });\n }\n \n /**\n * Group\n *\n * Returns a paginated list of pools that belong to a specific pool group\n */\n public getGroup<ThrowOnError extends boolean = false>(options: Options<GetPoolsGroupsByLexicalOrderMintsData, ThrowOnError>): RequestResult<GetPoolsGroupsByLexicalOrderMintsResponses, GetPoolsGroupsByLexicalOrderMintsErrors, ThrowOnError> {\n return (options.client ?? this.client).get<GetPoolsGroupsByLexicalOrderMintsResponses, GetPoolsGroupsByLexicalOrderMintsErrors, ThrowOnError>({ url: '/pools/groups/{lexical_order_mints}', ...options });\n }\n \n /**\n * Pool\n *\n * Returns metadata and current state for a single pool\n */\n public getPool<ThrowOnError extends boolean = false>(options: Options<GetPoolsByAddressData, ThrowOnError>): RequestResult<GetPoolsByAddressResponses, GetPoolsByAddressErrors, ThrowOnError> {\n return (options.client ?? this.client).get<GetPoolsByAddressResponses, GetPoolsByAddressErrors, ThrowOnError>({ url: '/pools/{address}', ...options });\n }\n \n /**\n * OHLCV\n *\n * Returns OHLCV candles for a single pool over a time range\n *\n * **Notes**\n * - If both `start_time` and `end_time` are provided, candles are returned in the range `[start_time, end_time]`\n * - If only one of `start_time` or `end_time` is provided, the missing bound is inferred using the selected `timeframe`\n * - If neither is provided, a default range is used based on `timeframe`\n */\n public getOhlcv<ThrowOnError extends boolean = false>(options: Options<GetPoolsByAddressOhlcvData, ThrowOnError>): RequestResult<GetPoolsByAddressOhlcvResponses, GetPoolsByAddressOhlcvErrors, ThrowOnError> {\n return (options.client ?? this.client).get<GetPoolsByAddressOhlcvResponses, GetPoolsByAddressOhlcvErrors, ThrowOnError>({ url: '/pools/{address}/ohlcv', ...options });\n }\n \n /**\n * Historical Volume\n *\n * Returns historical volume for a pool aggregated into time buckets\n *\n * **Notes**\n * - If both `start_time` and `end_time` are provided, the result covers the range `[start_time, end_time]`\n * - If only one of `start_time` or `end_time` is provided, the missing bound is inferred using the selected `timeframe`\n * - If neither is provided, a default range is used based on `timeframe`\n */\n public getHistoricalVolume<ThrowOnError extends boolean = false>(options: Options<GetPoolsByAddressVolumeHistoryData, ThrowOnError>): RequestResult<GetPoolsByAddressVolumeHistoryResponses, GetPoolsByAddressVolumeHistoryErrors, ThrowOnError> {\n return (options.client ?? this.client).get<GetPoolsByAddressVolumeHistoryResponses, GetPoolsByAddressVolumeHistoryErrors, ThrowOnError>({ url: '/pools/{address}/volume/history', ...options });\n }\n}\n\nexport class Portfolio extends HeyApiClient {\n /**\n * Get user portfolio with all pools containing closed positions\n *\n * Returns a paginated list of pools where the user has closed positions,\n * sorted by most recent activity (last_closed_at DESC). The response includes:\n * - Pool metadata (address, token symbols, icons, fees)\n * - Aggregated PnL data (deposits, withdrawals, fees, total PnL)\n * - Per-token breakdowns (X and Y)\n *\n * For detailed position history within each pool, call the /positions/{pool_address}/pnl endpoint.\n *\n *\n *\n * # Arguments\n *\n * * `user` - The wallet address of the user\n * * `page` - Page number for pagination (default: 1)\n * * `page_size` - Number of pools per page (default: 120, max: 365)\n * * `days_back` - Only include pools with positions closed within this many days (default: 90)\n *\n * # Returns\n *\n * * `200` - The user's portfolio with pool metadata and aggregated PnL\n * * `400` - Invalid user address or query parameters\n */\n public getUserPortfolio<ThrowOnError extends boolean = false>(options: Options<GetPortfolioData, ThrowOnError>): RequestResult<GetPortfolioResponses, unknown, ThrowOnError> {\n return (options.client ?? this.client).get<GetPortfolioResponses, unknown, ThrowOnError>({ url: '/portfolio', ...options });\n }\n \n /**\n * Get user portfolio with all pools containing open positions\n *\n * Returns a paginated list of pools where the user has open (active) positions.\n * The response includes:\n * - Pool metadata (address, bin step, base fee, token symbols, icons)\n * - Current balances and unclaimed fees in USD and SOL\n * - Pool metrics (TVL, 24h volume, fee/TVL ratio)\n * - List of open position addresses for each pool\n * - Aggregated total metrics across all pools (balances, unclaimed fees, PnL) in USD and SOL\n * - SOL price used for conversion (omitted if unavailable)\n *\n * Results can be sorted by various metrics and support pagination.\n *\n * # Arguments\n *\n * * `user` - The wallet address of the user\n * * `page` - Page number for pagination (default: 1, minimum: 1)\n * * `page_size` - Number of pools per page (default: 20, maximum: 50)\n * * `sort_by` - Field to sort by: `current_balances`, `unclaimed_fee`, `pool_tvl`,\n * `pool_volume_24h`, or `fee_per_tvl_24h` (default: `current_balances`)\n * * `sort_direction` - Sort direction: `asc` or `desc` (default: `desc`)\n *\n * # Returns\n *\n * * `200` - The user's open portfolio with pool metadata, balances, and total metrics\n * * `400` - Invalid user address or query parameters\n */\n public getUserOpenPortfolio<ThrowOnError extends boolean = false>(options: Options<GetPortfolioOpenData, ThrowOnError>): RequestResult<GetPortfolioOpenResponses, GetPortfolioOpenErrors, ThrowOnError> {\n return (options.client ?? this.client).get<GetPortfolioOpenResponses, GetPortfolioOpenErrors, ThrowOnError>({ url: '/portfolio/open', ...options });\n }\n \n /**\n * Get total portfolio PnL across all pools\n *\n * Returns the all-time total PnL in USD and percentage change across all user's pools.\n * This aggregates data from all closed positions across the entire portfolio.\n *\n * # Arguments\n *\n * * `user` - The wallet address of the user\n *\n * # Returns\n *\n * * `200` - The user's total portfolio PnL\n * * `400` - Invalid user address or query parameters\n */\n public getPortfolioTotal<ThrowOnError extends boolean = false>(options: Options<GetPortfolioTotalData, ThrowOnError>): RequestResult<GetPortfolioTotalResponses, GetPortfolioTotalErrors, ThrowOnError> {\n return (options.client ?? this.client).get<GetPortfolioTotalResponses, GetPortfolioTotalErrors, ThrowOnError>({ url: '/portfolio/total', ...options });\n }\n}\n\nexport class Positions extends HeyApiClient {\n /**\n * Get the historical events for a position\n *\n * This endpoint returns the historical actions for a position.\n *\n * # Arguments\n *\n * * `address` - The address of the position\n *\n * # Returns\n *\n * * `200` - The historical actions for the position\n */\n public getPositionHistoricalEvents<ThrowOnError extends boolean = false>(options: Options<GetPositionsByAddressHistoricalData, ThrowOnError>): RequestResult<GetPositionsByAddressHistoricalResponses, unknown, ThrowOnError> {\n return (options.client ?? this.client).get<GetPositionsByAddressHistoricalResponses, unknown, ThrowOnError>({ url: '/positions/{address}/historical', ...options });\n }\n \n /**\n * Get position PnL data (open and closed positions with on-the-fly calculation)\n *\n * Returns positions for a specific pool and user with calculated PnL values.\n * Includes SOL-denominated amounts when SOL price is available (omitted otherwise).\n * Results can be filtered by status (open/closed) and are paginated.\n *\n * # Arguments\n *\n * * `pool_address` - The address of the pool\n * * `user` - The user address\n * * `status` - Filter by status: \"open\", \"closed\", or omit for all (default: all)\n * * `page` - Page number starting from 1 (default: 1)\n *\n * # Returns\n *\n * * `200` - Paginated list of positions with PnL data in USD and SOL\n */\n public getPoolPositionPnl<ThrowOnError extends boolean = false>(options: Options<GetPositionsByPoolAddressPnlData, ThrowOnError>): RequestResult<GetPositionsByPoolAddressPnlResponses, unknown, ThrowOnError> {\n return (options.client ?? this.client).get<GetPositionsByPoolAddressPnlResponses, unknown, ThrowOnError>({ url: '/positions/{pool_address}/pnl', ...options });\n }\n}\n\nexport class Stats extends HeyApiClient {\n /**\n * Protocol Overview\n *\n * Returns aggregated protocol-level metrics across all pools\n */\n public getProtocolOverview<ThrowOnError extends boolean = false>(options?: Options<GetStatsProtocolMetricsData, ThrowOnError>): RequestResult<GetStatsProtocolMetricsResponses, GetStatsProtocolMetricsErrors, ThrowOnError> {\n return (options?.client ?? this.client).get<GetStatsProtocolMetricsResponses, GetStatsProtocolMetricsErrors, ThrowOnError>({ url: '/stats/protocol_metrics', ...options });\n }\n}\n\nexport class LimitOrders extends HeyApiClient {\n /**\n * Get Closed Limit Order Pools\n *\n * Paginated per-pool summary of the wallet's closed limit orders, sorted by\n * `last_closed_at` DESC. A limit order is closed iff it has a row in\n * `close_limit_orders` — cancel-only orders remain in `/open`.\n */\n public getClosedLimitOrderPools<ThrowOnError extends boolean = false>(options: Options<GetWalletsByWalletLimitOrdersClosedPoolsData, ThrowOnError>): RequestResult<GetWalletsByWalletLimitOrdersClosedPoolsResponses, GetWalletsByWalletLimitOrdersClosedPoolsErrors, ThrowOnError> {\n return (options.client ?? this.client).get<GetWalletsByWalletLimitOrdersClosedPoolsResponses, GetWalletsByWalletLimitOrdersClosedPoolsErrors, ThrowOnError>({ url: '/wallets/{wallet}/limit_orders/closed/pools', ...options });\n }\n \n /**\n * Get Closed Limit Orders For Pool\n *\n * Paginated per-order lifecycle view for the wallet's closed limit orders in\n * one pool, sorted by `last_closed_at` DESC.\n */\n public getClosedLimitOrdersForPool<ThrowOnError extends boolean = false>(options: Options<GetWalletsByWalletLimitOrdersClosedPoolsByPoolAddressData, ThrowOnError>): RequestResult<GetWalletsByWalletLimitOrdersClosedPoolsByPoolAddressResponses, GetWalletsByWalletLimitOrdersClosedPoolsByPoolAddressErrors, ThrowOnError> {\n return (options.client ?? this.client).get<GetWalletsByWalletLimitOrdersClosedPoolsByPoolAddressResponses, GetWalletsByWalletLimitOrdersClosedPoolsByPoolAddressErrors, ThrowOnError>({ url: '/wallets/{wallet}/limit_orders/closed/pools/{pool_address}', ...options });\n }\n \n /**\n * Get Open Limit Order Pools\n *\n * Paginated per-pool summary of the wallet's live limit orders, sorted by\n * deposit USD DESC. A limit order is live until it has a `close_limit_orders`\n * row — cancels do not remove it from this view.\n */\n public getOpenLimitOrderPools<ThrowOnError extends boolean = false>(options: Options<GetWalletsByWalletLimitOrdersOpenPoolsData, ThrowOnError>): RequestResult<GetWalletsByWalletLimitOrdersOpenPoolsResponses, GetWalletsByWalletLimitOrdersOpenPoolsErrors, ThrowOnError> {\n return (options.client ?? this.client).get<GetWalletsByWalletLimitOrdersOpenPoolsResponses, GetWalletsByWalletLimitOrdersOpenPoolsErrors, ThrowOnError>({ url: '/wallets/{wallet}/limit_orders/open/pools', ...options });\n }\n \n /**\n * Get Open Limit Orders For Pool\n *\n * Paginated per-order detail for the wallet's live limit orders in one pool,\n * sorted by placement time DESC. \"Live\" = has no `close_limit_orders` row.\n */\n public getOpenLimitOrdersForPool<ThrowOnError extends boolean = false>(options: Options<GetWalletsByWalletLimitOrdersOpenPoolsByPoolAddressData, ThrowOnError>): RequestResult<GetWalletsByWalletLimitOrdersOpenPoolsByPoolAddressResponses, GetWalletsByWalletLimitOrdersOpenPoolsByPoolAddressErrors, ThrowOnError> {\n return (options.client ?? this.client).get<GetWalletsByWalletLimitOrdersOpenPoolsByPoolAddressResponses, GetWalletsByWalletLimitOrdersOpenPoolsByPoolAddressErrors, ThrowOnError>({ url: '/wallets/{wallet}/limit_orders/open/pools/{pool_address}', ...options });\n }\n \n /**\n * Get Bonus Claimed For Pool\n *\n * Returns the total realized bonus a wallet has claimed on one DLMM pool,\n * aggregated across every cancel event the wallet has on the pool. Includes\n * cancels on orders that have not yet been closed (a cancel pays bonus\n * immediately; the on-chain account is closed separately via\n * `CloseLimitOrderIfEmpty`). USD/SOL values are derived using each cancel\n * row's stored cancel-time price ratios — not current spot.\n */\n public getBonusClaimedForPool<ThrowOnError extends boolean = false>(options: Options<GetWalletsByWalletLimitOrdersPoolsByPoolAddressBonusClaimedData, ThrowOnError>): RequestResult<GetWalletsByWalletLimitOrdersPoolsByPoolAddressBonusClaimedResponses, GetWalletsByWalletLimitOrdersPoolsByPoolAddressBonusClaimedErrors, ThrowOnError> {\n return (options.client ?? this.client).get<GetWalletsByWalletLimitOrdersPoolsByPoolAddressBonusClaimedResponses, GetWalletsByWalletLimitOrdersPoolsByPoolAddressBonusClaimedErrors, ThrowOnError>({ url: '/wallets/{wallet}/limit_orders/pools/{pool_address}/bonus_claimed', ...options });\n }\n \n /**\n * Get Limit Order Summary\n *\n * Returns aggregate totals for a user's limit orders across all pools:\n * open/closed order counts, total deposit value, and total bonus fees earned.\n * \"Open\" means placed with no `close_limit_orders` row. \"Closed\" means the\n * order has a `close_limit_orders` row (`CloseLimitOrderIfEmpty` was invoked).\n */\n public getLimitOrderSummary<ThrowOnError extends boolean = false>(options: Options<GetWalletsByWalletLimitOrdersSummaryData, ThrowOnError>): RequestResult<GetWalletsByWalletLimitOrdersSummaryResponses, GetWalletsByWalletLimitOrdersSummaryErrors, ThrowOnError> {\n return (options.client ?? this.client).get<GetWalletsByWalletLimitOrdersSummaryResponses, GetWalletsByWalletLimitOrdersSummaryErrors, ThrowOnError>({ url: '/wallets/{wallet}/limit_orders/summary', ...options });\n }\n}\n\nexport class Wallets extends HeyApiClient {\n /**\n * Get Wallet Pool Total Claims\n *\n * Returns combined total claimed fees and rewards for a wallet in a specific pool\n */\n public getWalletPoolTotalClaims<ThrowOnError extends boolean = false>(options: Options<GetWalletsByWalletPoolsByPoolAddressTotalClaimsData, ThrowOnError>): RequestResult<GetWalletsByWalletPoolsByPoolAddressTotalClaimsResponses, GetWalletsByWalletPoolsByPoolAddressTotalClaimsErrors, ThrowOnError> {\n return (options.client ?? this.client).get<GetWalletsByWalletPoolsByPoolAddressTotalClaimsResponses, GetWalletsByWalletPoolsByPoolAddressTotalClaimsErrors, ThrowOnError>({ url: '/wallets/{wallet}/pools/{pool_address}/total_claims', ...options });\n }\n}\n\nexport class DlmmApi extends HeyApiClient {\n public static readonly __registry: HeyApiRegistry<DlmmApi> = new HeyApiRegistry<DlmmApi>();\n \n constructor(args?: {\n client?: Client;\n key?: string;\n }) {\n super(args);\n DlmmApi.__registry.set(this, args?.key);\n }\n \n private _pools?: Pools;\n get pools(): Pools {\n return this._pools ??= new Pools({ client: this.client });\n }\n \n private _portfolio?: Portfolio;\n get portfolio(): Portfolio {\n return this._portfolio ??= new Portfolio({ client: this.client });\n }\n \n private _positions?: Positions;\n get positions(): Positions {\n return this._positions ??= new Positions({ client: this.client });\n }\n \n private _stats?: Stats;\n get stats(): Stats {\n return this._stats ??= new Stats({ client: this.client });\n }\n \n private _limitOrders?: LimitOrders;\n get limitOrders(): LimitOrders {\n return this._limitOrders ??= new LimitOrders({ client: this.client });\n }\n \n private _wallets?: Wallets;\n get wallets(): Wallets {\n return this._wallets ??= new Wallets({ client: this.client });\n }\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { ArrayStyle, ObjectStyle, SerializerOptions } from './pathSerializer.gen';\n\nexport type QuerySerializer = (query: Record<string, unknown>) => string;\n\nexport type BodySerializer = (body: unknown) => unknown;\n\ntype QuerySerializerOptionsObject = {\n allowReserved?: boolean;\n array?: Partial<SerializerOptions<ArrayStyle>>;\n object?: Partial<SerializerOptions<ObjectStyle>>;\n};\n\nexport type QuerySerializerOptions = QuerySerializerOptionsObject & {\n /**\n * Per-parameter serialization overrides. When provided, these settings\n * override the global array/object settings for specific parameter names.\n */\n parameters?: Record<string, QuerySerializerOptionsObject>;\n};\n\nconst serializeFormDataPair = (data: FormData, key: string, value: unknown): void => {\n if (typeof value === 'string' || value instanceof Blob) {\n data.append(key, value);\n } else if (value instanceof Date) {\n data.append(key, value.toISOString());\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nconst serializeUrlSearchParamsPair = (data: URLSearchParams, key: string, value: unknown): void => {\n if (typeof value === 'string') {\n data.append(key, value);\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nexport const formDataBodySerializer = {\n bodySerializer: (body: unknown): FormData => {\n const data = new FormData();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeFormDataPair(data, key, v));\n } else {\n serializeFormDataPair(data, key, value);\n }\n });\n\n return data;\n },\n};\n\nexport const jsonBodySerializer = {\n bodySerializer: (body: unknown): string =>\n JSON.stringify(body, (_key, value) => (typeof value === 'bigint' ? value.toString() : value)),\n};\n\nexport const urlSearchParamsBodySerializer = {\n bodySerializer: (body: unknown): string => {\n const data = new URLSearchParams();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeUrlSearchParamsPair(data, key, v));\n } else {\n serializeUrlSearchParamsPair(data, key, value);\n }\n });\n\n return data.toString();\n },\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Config } from './types.gen';\n\nexport type ServerSentEventsOptions<TData = unknown> = Omit<RequestInit, 'method'> &\n Pick<Config, 'method' | 'responseTransformer' | 'responseValidator'> & {\n /**\n * Fetch API implementation. You can use this option to provide a custom\n * fetch instance.\n *\n * @default globalThis.fetch\n */\n fetch?: typeof fetch;\n /**\n * Implementing clients can call request interceptors inside this hook.\n */\n onRequest?: (url: string, init: RequestInit) => Promise<Request>;\n /**\n * Callback invoked when a network or parsing error occurs during streaming.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param error The error that occurred.\n */\n onSseError?: (error: unknown) => void;\n /**\n * Callback invoked when an event is streamed from the server.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param event Event streamed from the server.\n * @returns Nothing (void).\n */\n onSseEvent?: (event: StreamEvent<TData>) => void;\n serializedBody?: RequestInit['body'];\n /**\n * Default retry delay in milliseconds.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 3000\n */\n sseDefaultRetryDelay?: number;\n /**\n * Maximum number of retry attempts before giving up.\n */\n sseMaxRetryAttempts?: number;\n /**\n * Maximum retry delay in milliseconds.\n *\n * Applies only when exponential backoff is used.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 30000\n */\n sseMaxRetryDelay?: number;\n /**\n * Optional sleep function for retry backoff.\n *\n * Defaults to using `setTimeout`.\n */\n sseSleepFn?: (ms: number) => Promise<void>;\n url: string;\n };\n\nexport interface StreamEvent<TData = unknown> {\n data: TData;\n event?: string;\n id?: string;\n retry?: number;\n}\n\nexport type ServerSentEventsResult<TData = unknown, TReturn = void, TNext = unknown> = {\n stream: AsyncGenerator<\n TData extends Record<string, unknown> ? TData[keyof TData] : TData,\n TReturn,\n TNext\n >;\n};\n\nexport function createSseClient<TData = unknown>({\n onRequest,\n onSseError,\n onSseEvent,\n responseTransformer,\n responseValidator,\n sseDefaultRetryDelay,\n sseMaxRetryAttempts,\n sseMaxRetryDelay,\n sseSleepFn,\n url,\n ...options\n}: ServerSentEventsOptions): ServerSentEventsResult<TData> {\n let lastEventId: string | undefined;\n\n const sleep = sseSleepFn ?? ((ms: number) => new Promise((resolve) => setTimeout(resolve, ms)));\n\n const createStream = async function* () {\n let retryDelay: number = sseDefaultRetryDelay ?? 3000;\n let attempt = 0;\n const signal = options.signal ?? new AbortController().signal;\n\n while (true) {\n if (signal.aborted) break;\n\n attempt++;\n\n const headers =\n options.headers instanceof Headers\n ? options.headers\n : new Headers(options.headers as Record<string, string> | undefined);\n\n if (lastEventId !== undefined) {\n headers.set('Last-Event-ID', lastEventId);\n }\n\n try {\n const requestInit: RequestInit = {\n redirect: 'follow',\n ...options,\n body: options.serializedBody,\n headers,\n signal,\n };\n let request = new Request(url, requestInit);\n if (onRequest) {\n request = await onRequest(url, requestInit);\n }\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = options.fetch ?? globalThis.fetch;\n const response = await _fetch(request);\n\n if (!response.ok) throw new Error(`SSE failed: ${response.status} ${response.statusText}`);\n\n if (!response.body) throw new Error('No body in SSE response');\n\n const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();\n\n let buffer = '';\n\n const abortHandler = () => {\n try {\n reader.cancel();\n } catch {\n // noop\n }\n };\n\n signal.addEventListener('abort', abortHandler);\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += value;\n buffer = buffer.replace(/\\r\\n?/g, '\\n'); // normalize line endings\n\n const chunks = buffer.split('\\n\\n');\n buffer = chunks.pop() ?? '';\n\n for (const chunk of chunks) {\n const lines = chunk.split('\\n');\n const dataLines: Array<string> = [];\n let eventName: string | undefined;\n\n for (const line of lines) {\n if (line.startsWith('data:')) {\n dataLines.push(line.replace(/^data:\\s*/, ''));\n } else if (line.startsWith('event:')) {\n eventName = line.replace(/^event:\\s*/, '');\n } else if (line.startsWith('id:')) {\n lastEventId = line.replace(/^id:\\s*/, '');\n } else if (line.startsWith('retry:')) {\n const parsed = Number.parseInt(line.replace(/^retry:\\s*/, ''), 10);\n if (!Number.isNaN(parsed)) {\n retryDelay = parsed;\n }\n }\n }\n\n let data: unknown;\n let parsedJson = false;\n\n if (dataLines.length) {\n const rawData = dataLines.join('\\n');\n try {\n data = JSON.parse(rawData);\n parsedJson = true;\n } catch {\n data = rawData;\n }\n }\n\n if (parsedJson) {\n if (responseValidator) {\n await responseValidator(data);\n }\n\n if (responseTransformer) {\n data = await responseTransformer(data);\n }\n }\n\n onSseEvent?.({\n data,\n event: eventName,\n id: lastEventId,\n retry: retryDelay,\n });\n\n if (dataLines.length) {\n yield data as any;\n }\n }\n }\n } finally {\n signal.removeEventListener('abort', abortHandler);\n reader.releaseLock();\n }\n\n break; // exit loop on normal completion\n } catch (error) {\n // connection failed or aborted; retry after delay\n onSseError?.(error);\n\n if (sseMaxRetryAttempts !== undefined && attempt >= sseMaxRetryAttempts) {\n break; // stop after firing error\n }\n\n // exponential backoff: double retry each attempt, cap at 30s\n const backoff = Math.min(retryDelay * 2 ** (attempt - 1), sseMaxRetryDelay ?? 30000);\n await sleep(backoff);\n }\n }\n };\n\n const stream = createStream();\n\n return { stream };\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\ninterface SerializeOptions<T> extends SerializePrimitiveOptions, SerializerOptions<T> {}\n\ninterface SerializePrimitiveOptions {\n allowReserved?: boolean;\n name: string;\n}\n\nexport interface SerializerOptions<T> {\n /**\n * @default true\n */\n explode: boolean;\n style: T;\n}\n\nexport type ArrayStyle = 'form' | 'spaceDelimited' | 'pipeDelimited';\nexport type ArraySeparatorStyle = ArrayStyle | MatrixStyle;\ntype MatrixStyle = 'label' | 'matrix' | 'simple';\nexport type ObjectStyle = 'form' | 'deepObject';\ntype ObjectSeparatorStyle = ObjectStyle | MatrixStyle;\n\ninterface SerializePrimitiveParam extends SerializePrimitiveOptions {\n value: string;\n}\n\nexport const separatorArrayExplode = (style: ArraySeparatorStyle): '.' | ';' | ',' | '&' => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const separatorArrayNoExplode = (style: ArraySeparatorStyle): ',' | '|' | '%20' => {\n switch (style) {\n case 'form':\n return ',';\n case 'pipeDelimited':\n return '|';\n case 'spaceDelimited':\n return '%20';\n default:\n return ',';\n }\n};\n\nexport const separatorObjectExplode = (style: ObjectSeparatorStyle): '.' | ';' | ',' | '&' => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const serializeArrayParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n}: SerializeOptions<ArraySeparatorStyle> & {\n value: unknown[];\n}): string => {\n if (!explode) {\n const joinedValues = (\n allowReserved ? value : value.map((v) => encodeURIComponent(v as string))\n ).join(separatorArrayNoExplode(style));\n switch (style) {\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n case 'simple':\n return joinedValues;\n default:\n return `${name}=${joinedValues}`;\n }\n }\n\n const separator = separatorArrayExplode(style);\n const joinedValues = value\n .map((v) => {\n if (style === 'label' || style === 'simple') {\n return allowReserved ? v : encodeURIComponent(v as string);\n }\n\n return serializePrimitiveParam({\n allowReserved,\n name,\n value: v as string,\n });\n })\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n\nexport const serializePrimitiveParam = ({\n allowReserved,\n name,\n value,\n}: SerializePrimitiveParam): string => {\n if (value === undefined || value === null) {\n return '';\n }\n\n if (typeof value === 'object') {\n throw new Error(\n 'Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.',\n );\n }\n\n return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;\n};\n\nexport const serializeObjectParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n valueOnly,\n}: SerializeOptions<ObjectSeparatorStyle> & {\n value: Record<string, unknown> | Date;\n valueOnly?: boolean;\n}): string => {\n if (value instanceof Date) {\n return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;\n }\n\n if (style !== 'deepObject' && !explode) {\n let values: string[] = [];\n Object.entries(value).forEach(([key, v]) => {\n values = [...values, key, allowReserved ? (v as string) : encodeURIComponent(v as string)];\n });\n const joinedValues = values.join(',');\n switch (style) {\n case 'form':\n return `${name}=${joinedValues}`;\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n default:\n return joinedValues;\n }\n }\n\n const separator = separatorObjectExplode(style);\n const joinedValues = Object.entries(value)\n .map(([key, v]) =>\n serializePrimitiveParam({\n allowReserved,\n name: style === 'deepObject' ? `${name}[${key}]` : key,\n value: v as string,\n }),\n )\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { BodySerializer, QuerySerializer } from './bodySerializer.gen';\nimport {\n type ArraySeparatorStyle,\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from './pathSerializer.gen';\n\nexport interface PathSerializer {\n path: Record<string, unknown>;\n url: string;\n}\n\nexport const PATH_PARAM_RE: RegExp = /\\{[^{}]+\\}/g;\n\nexport const defaultPathSerializer = ({ path, url: _url }: PathSerializer): string => {\n let url = _url;\n const matches = _url.match(PATH_PARAM_RE);\n if (matches) {\n for (const match of matches) {\n let explode = false;\n let name = match.substring(1, match.length - 1);\n let style: ArraySeparatorStyle = 'simple';\n\n if (name.endsWith('*')) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n\n if (name.startsWith('.')) {\n name = name.substring(1);\n style = 'label';\n } else if (name.startsWith(';')) {\n name = name.substring(1);\n style = 'matrix';\n }\n\n const value = path[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n url = url.replace(match, serializeArrayParam({ explode, name, style, value }));\n continue;\n }\n\n if (typeof value === 'object') {\n url = url.replace(\n match,\n serializeObjectParam({\n explode,\n name,\n style,\n value: value as Record<string, unknown>,\n valueOnly: true,\n }),\n );\n continue;\n }\n\n if (style === 'matrix') {\n url = url.replace(\n match,\n `;${serializePrimitiveParam({\n name,\n value: value as string,\n })}`,\n );\n continue;\n }\n\n const replaceValue = encodeURIComponent(\n style === 'label' ? `.${value as string}` : (value as string),\n );\n url = url.replace(match, replaceValue);\n }\n }\n return url;\n};\n\nexport const getUrl = ({\n baseUrl,\n path,\n query,\n querySerializer,\n url: _url,\n}: {\n baseUrl?: string;\n path?: Record<string, unknown>;\n query?: Record<string, unknown>;\n querySerializer: QuerySerializer;\n url: string;\n}): string => {\n const pathUrl = _url.startsWith('/') ? _url : `/${_url}`;\n let url = (baseUrl ?? '') + pathUrl;\n if (path) {\n url = defaultPathSerializer({ path, url });\n }\n let search = query ? querySerializer(query) : '';\n if (search.startsWith('?')) {\n search = search.substring(1);\n }\n if (search) {\n url += `?${search}`;\n }\n return url;\n};\n\nexport function getValidRequestBody(options: {\n body?: unknown;\n bodySerializer?: BodySerializer | null;\n serializedBody?: unknown;\n}): unknown {\n const hasBody = options.body !== undefined;\n const isSerializedBody = hasBody && options.bodySerializer;\n\n if (isSerializedBody) {\n if ('serializedBody' in options) {\n const hasSerializedBody =\n options.serializedBody !== undefined && options.serializedBody !== '';\n\n return hasSerializedBody ? options.serializedBody : null;\n }\n\n // not all clients implement a serializedBody property (i.e., client-axios)\n return options.body !== '' ? options.body : null;\n }\n\n // plain/text body\n if (hasBody) {\n return options.body;\n }\n\n // no body was provided\n return undefined;\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nexport type AuthToken = string | undefined;\n\nexport interface Auth {\n /**\n * Which part of the request do we use to send the auth?\n *\n * @default 'header'\n */\n in?: 'header' | 'query' | 'cookie';\n /**\n * A unique identifier for the security scheme.\n *\n * Defined only when there are multiple security schemes whose `Auth`\n * shape would otherwise be identical.\n */\n key?: string;\n /**\n * Header or query parameter name.\n *\n * @default 'Authorization'\n */\n name?: string;\n scheme?: 'basic' | 'bearer';\n type: 'apiKey' | 'http';\n}\n\nexport const getAuthToken = async (\n auth: Auth,\n callback: ((auth: Auth) => Promise<AuthToken> | AuthToken) | AuthToken,\n): Promise<string | undefined> => {\n const token = typeof callback === 'function' ? await callback(auth) : callback;\n\n if (!token) {\n return;\n }\n\n if (auth.scheme === 'bearer') {\n return `Bearer ${token}`;\n }\n\n if (auth.scheme === 'basic') {\n return `Basic ${btoa(token)}`;\n }\n\n return token;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { getAuthToken } from '../core/auth.gen';\nimport type { QuerySerializerOptions } from '../core/bodySerializer.gen';\nimport { jsonBodySerializer } from '../core/bodySerializer.gen';\nimport {\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from '../core/pathSerializer.gen';\nimport { getUrl } from '../core/utils.gen';\nimport type { Client, ClientOptions, Config, RequestOptions } from './types.gen';\n\nexport const createQuerySerializer = <T = unknown>({\n parameters = {},\n ...args\n}: QuerySerializerOptions = {}): ((queryParams: T) => string) => {\n const querySerializer = (queryParams: T): string => {\n const search: string[] = [];\n if (queryParams && typeof queryParams === 'object') {\n for (const name in queryParams) {\n const value = queryParams[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n const options = parameters[name] || args;\n\n if (Array.isArray(value)) {\n const serializedArray = serializeArrayParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'form',\n value,\n ...options.array,\n });\n if (serializedArray) search.push(serializedArray);\n } else if (typeof value === 'object') {\n const serializedObject = serializeObjectParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'deepObject',\n value: value as Record<string, unknown>,\n ...options.object,\n });\n if (serializedObject) search.push(serializedObject);\n } else {\n const serializedPrimitive = serializePrimitiveParam({\n allowReserved: options.allowReserved,\n name,\n value: value as string,\n });\n if (serializedPrimitive) search.push(serializedPrimitive);\n }\n }\n }\n return search.join('&');\n };\n return querySerializer;\n};\n\n/**\n * Infers parseAs value from provided Content-Type header.\n */\nexport const getParseAs = (contentType: string | null): Exclude<Config['parseAs'], 'auto'> => {\n if (!contentType) {\n // If no Content-Type header is provided, the best we can do is return the raw response body,\n // which is effectively the same as the 'stream' option.\n return 'stream';\n }\n\n const cleanContent = contentType.split(';')[0]?.trim();\n\n if (!cleanContent) {\n return;\n }\n\n if (cleanContent.startsWith('application/json') || cleanContent.endsWith('+json')) {\n return 'json';\n }\n\n if (cleanContent === 'multipart/form-data') {\n return 'formData';\n }\n\n if (\n ['application/', 'audio/', 'image/', 'video/'].some((type) => cleanContent.startsWith(type))\n ) {\n return 'blob';\n }\n\n if (cleanContent.startsWith('text/')) {\n return 'text';\n }\n\n return;\n};\n\nconst checkForExistence = (\n options: Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n },\n name?: string,\n): boolean => {\n if (!name) {\n return false;\n }\n if (\n options.headers.has(name) ||\n options.query?.[name] ||\n options.headers.get('Cookie')?.includes(`${name}=`)\n ) {\n return true;\n }\n return false;\n};\n\nexport async function setAuthParams(\n options: Pick<RequestOptions, 'auth' | 'query' | 'security'> & {\n headers: Headers;\n },\n): Promise<void> {\n for (const auth of options.security ?? []) {\n if (checkForExistence(options, auth.name)) {\n continue;\n }\n\n const token = await getAuthToken(auth, options.auth);\n\n if (!token) {\n continue;\n }\n\n const name = auth.name ?? 'Authorization';\n\n switch (auth.in) {\n case 'query':\n if (!options.query) {\n options.query = {};\n }\n options.query[name] = token;\n break;\n case 'cookie':\n options.headers.append('Cookie', `${name}=${token}`);\n break;\n case 'header':\n default:\n options.headers.set(name, token);\n break;\n }\n }\n}\n\nexport const buildUrl: Client['buildUrl'] = (options) =>\n getUrl({\n baseUrl: options.baseUrl as string,\n path: options.path,\n query: options.query,\n querySerializer:\n typeof options.querySerializer === 'function'\n ? options.querySerializer\n : createQuerySerializer(options.querySerializer),\n url: options.url,\n });\n\nexport const mergeConfigs = (a: Config, b: Config): Config => {\n const config = { ...a, ...b };\n if (config.baseUrl?.endsWith('/')) {\n config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);\n }\n config.headers = mergeHeaders(a.headers, b.headers);\n return config;\n};\n\nconst headersEntries = (headers: Headers): Array<[string, string]> => {\n const entries: Array<[string, string]> = [];\n headers.forEach((value, key) => {\n entries.push([key, value]);\n });\n return entries;\n};\n\nexport const mergeHeaders = (\n ...headers: Array<Required<Config>['headers'] | undefined>\n): Headers => {\n const mergedHeaders = new Headers();\n for (const header of headers) {\n if (!header) {\n continue;\n }\n\n const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header);\n\n for (const [key, value] of iterator) {\n if (value === null) {\n mergedHeaders.delete(key);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n mergedHeaders.append(key, v as string);\n }\n } else if (value !== undefined) {\n // assume object headers are meant to be JSON stringified, i.e., their\n // content value in OpenAPI specification is 'application/json'\n mergedHeaders.set(\n key,\n typeof value === 'object' ? JSON.stringify(value) : (value as string),\n );\n }\n }\n }\n return mergedHeaders;\n};\n\ntype ErrInterceptor<Err, Res, Req, Options> = (\n error: Err,\n /** response may be undefined due to a network error where no response object is produced */\n response: Res | undefined,\n /** request may be undefined, because error may be from building the request object itself */\n request: Req | undefined,\n options: Options,\n) => Err | Promise<Err>;\n\ntype ReqInterceptor<Req, Options> = (request: Req, options: Options) => Req | Promise<Req>;\n\ntype ResInterceptor<Res, Req, Options> = (\n response: Res,\n request: Req,\n options: Options,\n) => Res | Promise<Res>;\n\nclass Interceptors<Interceptor> {\n fns: Array<Interceptor | null> = [];\n\n clear(): void {\n this.fns = [];\n }\n\n eject(id: number | Interceptor): void {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = null;\n }\n }\n\n exists(id: number | Interceptor): boolean {\n const index = this.getInterceptorIndex(id);\n return Boolean(this.fns[index]);\n }\n\n getInterceptorIndex(id: number | Interceptor): number {\n if (typeof id === 'number') {\n return this.fns[id] ? id : -1;\n }\n return this.fns.indexOf(id);\n }\n\n update(id: number | Interceptor, fn: Interceptor): number | Interceptor | false {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = fn;\n return id;\n }\n return false;\n }\n\n use(fn: Interceptor): number {\n this.fns.push(fn);\n return this.fns.length - 1;\n }\n}\n\nexport interface Middleware<Req, Res, Err, Options> {\n error: Interceptors<ErrInterceptor<Err, Res, Req, Options>>;\n request: Interceptors<ReqInterceptor<Req, Options>>;\n response: Interceptors<ResInterceptor<Res, Req, Options>>;\n}\n\nexport const createInterceptors = <Req, Res, Err, Options>(): Middleware<\n Req,\n Res,\n Err,\n Options\n> => ({\n error: new Interceptors<ErrInterceptor<Err, Res, Req, Options>>(),\n request: new Interceptors<ReqInterceptor<Req, Options>>(),\n response: new Interceptors<ResInterceptor<Res, Req, Options>>(),\n});\n\nconst defaultQuerySerializer = createQuerySerializer({\n allowReserved: false,\n array: {\n explode: true,\n style: 'form',\n },\n object: {\n explode: true,\n style: 'deepObject',\n },\n});\n\nconst defaultHeaders = {\n 'Content-Type': 'application/json',\n};\n\nexport const createConfig = <T extends ClientOptions = ClientOptions>(\n override: Config<Omit<ClientOptions, keyof T> & T> = {},\n): Config<Omit<ClientOptions, keyof T> & T> => ({\n ...jsonBodySerializer,\n headers: defaultHeaders,\n parseAs: 'auto',\n querySerializer: defaultQuerySerializer,\n ...override,\n});\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { createSseClient } from '../core/serverSentEvents.gen';\nimport type { HttpMethod } from '../core/types.gen';\nimport { getValidRequestBody } from '../core/utils.gen';\nimport type { Client, Config, RequestOptions, ResolvedRequestOptions } from './types.gen';\nimport {\n buildUrl,\n createConfig,\n createInterceptors,\n getParseAs,\n mergeConfigs,\n mergeHeaders,\n setAuthParams,\n} from './utils.gen';\n\ntype ReqInit = Omit<RequestInit, 'body' | 'headers'> & {\n body?: any;\n headers: ReturnType<typeof mergeHeaders>;\n};\n\nexport const createClient = (config: Config = {}): Client => {\n let _config = mergeConfigs(createConfig(), config);\n\n const getConfig = (): Config => ({ ..._config });\n\n const setConfig = (config: Config): Config => {\n _config = mergeConfigs(_config, config);\n return getConfig();\n };\n\n const interceptors = createInterceptors<Request, Response, unknown, ResolvedRequestOptions>();\n\n const beforeRequest = async <\n TData = unknown,\n TResponseStyle extends 'data' | 'fields' = 'fields',\n ThrowOnError extends boolean = boolean,\n Url extends string = string,\n >(\n options: RequestOptions<TData, TResponseStyle, ThrowOnError, Url>,\n ) => {\n const opts = {\n ..._config,\n ...options,\n fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,\n headers: mergeHeaders(_config.headers, options.headers),\n serializedBody: undefined as string | undefined,\n };\n\n if (opts.security) {\n await setAuthParams(opts);\n }\n\n if (opts.requestValidator) {\n await opts.requestValidator(opts);\n }\n\n if (opts.body !== undefined && opts.bodySerializer) {\n opts.serializedBody = opts.bodySerializer(opts.body) as string | undefined;\n }\n\n // remove Content-Type header if body is empty to avoid sending invalid requests\n if (opts.body === undefined || opts.serializedBody === '') {\n opts.headers.delete('Content-Type');\n }\n\n const resolvedOpts = opts as typeof opts &\n ResolvedRequestOptions<TResponseStyle, ThrowOnError, Url>;\n const url = buildUrl(resolvedOpts);\n\n return { opts: resolvedOpts, url };\n };\n\n const request: Client['request'] = async (options) => {\n const throwOnError = options.throwOnError ?? _config.throwOnError;\n const responseStyle = options.responseStyle ?? _config.responseStyle;\n\n let request: Request | undefined;\n let response: Response | undefined;\n\n try {\n const { opts, url } = await beforeRequest(options);\n const requestInit: ReqInit = {\n redirect: 'follow',\n ...opts,\n body: getValidRequestBody(opts),\n };\n\n request = new Request(url, requestInit);\n\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = opts.fetch!;\n\n response = await _fetch(request);\n\n for (const fn of interceptors.response.fns) {\n if (fn) {\n response = await fn(response, request, opts);\n }\n }\n\n const result = {\n request,\n response,\n };\n\n if (response.ok) {\n const parseAs =\n (opts.parseAs === 'auto'\n ? getParseAs(response.headers.get('Content-Type'))\n : opts.parseAs) ?? 'json';\n\n if (response.status === 204 || response.headers.get('Content-Length') === '0') {\n let emptyData: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'text':\n emptyData = await response[parseAs]();\n break;\n case 'formData':\n emptyData = new FormData();\n break;\n case 'stream':\n emptyData = response.body;\n break;\n case 'json':\n default:\n emptyData = {};\n break;\n }\n return opts.responseStyle === 'data'\n ? emptyData\n : {\n data: emptyData,\n ...result,\n };\n }\n\n let data: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'formData':\n case 'text':\n data = await response[parseAs]();\n break;\n case 'json': {\n // Some servers return 200 with no Content-Length and empty body.\n // response.json() would throw; read as text and parse if non-empty.\n const text = await response.text();\n data = text ? JSON.parse(text) : {};\n break;\n }\n case 'stream':\n return opts.responseStyle === 'data'\n ? response.body\n : {\n data: response.body,\n ...result,\n };\n }\n\n if (parseAs === 'json') {\n if (opts.responseValidator) {\n await opts.responseValidator(data);\n }\n\n if (opts.responseTransformer) {\n data = await opts.responseTransformer(data);\n }\n }\n\n return opts.responseStyle === 'data'\n ? data\n : {\n data,\n ...result,\n };\n }\n\n const textError = await response.text();\n let jsonError: unknown;\n\n try {\n jsonError = JSON.parse(textError);\n } catch {\n // noop\n }\n\n throw jsonError ?? textError;\n } catch (error) {\n let finalError = error;\n\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = await fn(finalError, response, request, options as ResolvedRequestOptions);\n }\n }\n\n finalError = finalError || {};\n\n if (throwOnError) {\n throw finalError;\n }\n\n // TODO: we probably want to return error and improve types\n return responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n request,\n response,\n };\n }\n };\n\n const makeMethodFn = (method: Uppercase<HttpMethod>) => (options: RequestOptions) =>\n request({ ...options, method });\n\n const makeSseFn = (method: Uppercase<HttpMethod>) => async (options: RequestOptions) => {\n const { opts, url } = await beforeRequest(options);\n return createSseClient({\n ...opts,\n body: opts.body as BodyInit | null | undefined,\n method,\n onRequest: async (url, init) => {\n let request = new Request(url, init);\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n return request;\n },\n serializedBody: getValidRequestBody(opts) as BodyInit | null | undefined,\n url,\n });\n };\n\n const _buildUrl: Client['buildUrl'] = (options) => buildUrl({ ..._config, ...options });\n\n return {\n buildUrl: _buildUrl,\n connect: makeMethodFn('CONNECT'),\n delete: makeMethodFn('DELETE'),\n get: makeMethodFn('GET'),\n getConfig,\n head: makeMethodFn('HEAD'),\n interceptors,\n options: makeMethodFn('OPTIONS'),\n patch: makeMethodFn('PATCH'),\n post: makeMethodFn('POST'),\n put: makeMethodFn('PUT'),\n request,\n setConfig,\n sse: {\n connect: makeSseFn('CONNECT'),\n delete: makeSseFn('DELETE'),\n get: makeSseFn('GET'),\n head: makeSseFn('HEAD'),\n options: makeSseFn('OPTIONS'),\n patch: makeSseFn('PATCH'),\n post: makeSseFn('POST'),\n put: makeSseFn('PUT'),\n trace: makeSseFn('TRACE'),\n },\n trace: makeMethodFn('TRACE'),\n } as Client;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { type Client, type ClientOptions, type Config, createClient, createConfig } from './client';\nimport type { ClientOptions as ClientOptions2 } from './types.gen';\n\n/**\n * The `createClientConfig()` function will be called on client initialization\n * and the returned object will become the client's initial configuration.\n *\n * You may want to initialize your client this way instead of calling\n * `setConfig()`. This is useful for example if you're using Next.js\n * to ensure your client always has the correct values.\n */\nexport type CreateClientConfig<T extends ClientOptions = ClientOptions2> = (override?: Config<ClientOptions & T>) => Config<Required<ClientOptions> & T>;\n\nexport const client: Client = createClient(createConfig<ClientOptions2>({ baseUrl: 'https://merv2-api.meteora.ag' }));\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Client, ClientMeta, Options as Options2, RequestResult, TDataShape } from './client';\nimport { client } from './client.gen';\nimport type { GetApyFilterByTokenMintByStartTimestampByEndTimestampData, GetApyFilterByTokenMintByStartTimestampByEndTimestampErrors, GetApyFilterByTokenMintByStartTimestampByEndTimestampResponses, GetApyStateByTokenMintData, GetApyStateByTokenMintErrors, GetApyStateByTokenMintResponses, GetVaultAddressesData, GetVaultAddressesErrors, GetVaultAddressesResponses, GetVaultInfoData, GetVaultInfoErrors, GetVaultInfoResponses, GetVaultStateByTokenMintData, GetVaultStateByTokenMintErrors, GetVaultStateByTokenMintResponses, GetVirtualPriceByTokenMintByStrategyData, GetVirtualPriceByTokenMintByStrategyErrors, GetVirtualPriceByTokenMintByStrategyResponses } from './types.gen';\n\nexport type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean, TResponse = unknown> = Options2<TData, ThrowOnError, TResponse> & {\n /**\n * You can provide a client instance returned by `createClient()` instead of\n * individual options. This might be also useful if you want to implement a\n * custom client.\n */\n client?: Client;\n /**\n * You can pass arbitrary values through the `meta` object. This can be\n * used to access values that aren't defined as part of the SDK function.\n */\n meta?: keyof ClientMeta extends never ? Record<string, unknown> : ClientMeta;\n};\n\nclass HeyApiClient {\n protected client: Client;\n \n constructor(args?: {\n client?: Client;\n }) {\n this.client = args?.client ?? client;\n }\n}\n\nclass HeyApiRegistry<T> {\n private readonly defaultKey = 'default';\n \n private readonly instances: Map<string, T> = new Map();\n \n get(key?: string): T {\n const instance = this.instances.get(key ?? this.defaultKey);\n if (!instance) {\n throw new Error(`No SDK client found. Create one with \"new DynamicVaultApi()\" to fix this error.`);\n }\n return instance;\n }\n \n set(value: T, key?: string): void {\n this.instances.set(key ?? this.defaultKey, value);\n }\n}\n\nexport class Vaults extends HeyApiClient {\n /**\n * get_vault_info\n *\n * Returns detailed information about all monitored vaults including their states, strategies, and performance metrics\n */\n public getVaultInfo<ThrowOnError extends boolean = false>(options?: Options<GetVaultInfoData, ThrowOnError>): RequestResult<GetVaultInfoResponses, GetVaultInfoErrors, ThrowOnError> {\n return (options?.client ?? this.client).get<GetVaultInfoResponses, GetVaultInfoErrors, ThrowOnError>({ url: '/vault_info', ...options });\n }\n \n /**\n * get_vault_addresses\n *\n * Returns a list of vault addresses with their associated information\n */\n public getVaultAddresses<ThrowOnError extends boolean = false>(options?: Options<GetVaultAddressesData, ThrowOnError>): RequestResult<GetVaultAddressesResponses, GetVaultAddressesErrors, ThrowOnError> {\n return (options?.client ?? this.client).get<GetVaultAddressesResponses, GetVaultAddressesErrors, ThrowOnError>({ url: '/vault_addresses', ...options });\n }\n \n /**\n * get_vault_state\n *\n * Returns the current state of a specific vault identified by its token mint address\n */\n public getVaultState<ThrowOnError extends boolean = false>(options: Options<GetVaultStateByTokenMintData, ThrowOnError>): RequestResult<GetVaultStateByTokenMintResponses, GetVaultStateByTokenMintErrors, ThrowOnError> {\n return (options.client ?? this.client).get<GetVaultStateByTokenMintResponses, GetVaultStateByTokenMintErrors, ThrowOnError>({ url: '/vault_state/{token_mint}', ...options });\n }\n}\n\nexport class Apy extends HeyApiClient {\n /**\n * get_apy_state\n *\n * Returns APY (Annual Percentage Yield) information for strategies associated with a specific token mint\n */\n public getApyState<ThrowOnError extends boolean = false>(options: Options<GetApyStateByTokenMintData, ThrowOnError>): RequestResult<GetApyStateByTokenMintResponses, GetApyStateByTokenMintErrors, ThrowOnError> {\n return (options.client ?? this.client).get<GetApyStateByTokenMintResponses, GetApyStateByTokenMintErrors, ThrowOnError>({ url: '/apy_state/{token_mint}', ...options });\n }\n \n /**\n * get_apy_by_time_range\n *\n * Returns APY information for a specific token mint within a given time range\n */\n public getFilterApyByTimeRange<ThrowOnError extends boolean = false>(options: Options<GetApyFilterByTokenMintByStartTimestampByEndTimestampData, ThrowOnError>): RequestResult<GetApyFilterByTokenMintByStartTimestampByEndTimestampResponses, GetApyFilterByTokenMintByStartTimestampByEndTimestampErrors, ThrowOnError> {\n return (options.client ?? this.client).get<GetApyFilterByTokenMintByStartTimestampByEndTimestampResponses, GetApyFilterByTokenMintByStartTimestampByEndTimestampErrors, ThrowOnError>({ url: '/apy_filter/{token_mint}/{start_timestamp}/{end_timestamp}', ...options });\n }\n}\n\nexport class VirtualPrice extends HeyApiClient {\n /**\n * get_virtual_price\n *\n * Returns virtual price information for a specific strategy within a vault\n */\n public getVirtualPrice<ThrowOnError extends boolean = false>(options: Options<GetVirtualPriceByTokenMintByStrategyData, ThrowOnError>): RequestResult<GetVirtualPriceByTokenMintByStrategyResponses, GetVirtualPriceByTokenMintByStrategyErrors, ThrowOnError> {\n return (options.client ?? this.client).get<GetVirtualPriceByTokenMintByStrategyResponses, GetVirtualPriceByTokenMintByStrategyErrors, ThrowOnError>({ url: '/virtual_price/{token_mint}/{strategy}', ...options });\n }\n}\n\nexport class DynamicVaultApi extends HeyApiClient {\n public static readonly __registry: HeyApiRegistry<DynamicVaultApi> = new HeyApiRegistry<DynamicVaultApi>();\n \n constructor(args?: {\n client?: Client;\n key?: string;\n }) {\n super(args);\n DynamicVaultApi.__registry.set(this, args?.key);\n }\n \n private _vaults?: Vaults;\n get vaults(): Vaults {\n return this._vaults ??= new Vaults({ client: this.client });\n }\n \n private _apy?: Apy;\n get apy(): Apy {\n return this._apy ??= new Apy({ client: this.client });\n }\n \n private _virtualPrice?: VirtualPrice;\n get virtualPrice(): VirtualPrice {\n return this._virtualPrice ??= new VirtualPrice({ client: this.client });\n }\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { ArrayStyle, ObjectStyle, SerializerOptions } from './pathSerializer.gen';\n\nexport type QuerySerializer = (query: Record<string, unknown>) => string;\n\nexport type BodySerializer = (body: unknown) => unknown;\n\ntype QuerySerializerOptionsObject = {\n allowReserved?: boolean;\n array?: Partial<SerializerOptions<ArrayStyle>>;\n object?: Partial<SerializerOptions<ObjectStyle>>;\n};\n\nexport type QuerySerializerOptions = QuerySerializerOptionsObject & {\n /**\n * Per-parameter serialization overrides. When provided, these settings\n * override the global array/object settings for specific parameter names.\n */\n parameters?: Record<string, QuerySerializerOptionsObject>;\n};\n\nconst serializeFormDataPair = (data: FormData, key: string, value: unknown): void => {\n if (typeof value === 'string' || value instanceof Blob) {\n data.append(key, value);\n } else if (value instanceof Date) {\n data.append(key, value.toISOString());\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nconst serializeUrlSearchParamsPair = (data: URLSearchParams, key: string, value: unknown): void => {\n if (typeof value === 'string') {\n data.append(key, value);\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nexport const formDataBodySerializer = {\n bodySerializer: (body: unknown): FormData => {\n const data = new FormData();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeFormDataPair(data, key, v));\n } else {\n serializeFormDataPair(data, key, value);\n }\n });\n\n return data;\n },\n};\n\nexport const jsonBodySerializer = {\n bodySerializer: (body: unknown): string =>\n JSON.stringify(body, (_key, value) => (typeof value === 'bigint' ? value.toString() : value)),\n};\n\nexport const urlSearchParamsBodySerializer = {\n bodySerializer: (body: unknown): string => {\n const data = new URLSearchParams();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeUrlSearchParamsPair(data, key, v));\n } else {\n serializeUrlSearchParamsPair(data, key, value);\n }\n });\n\n return data.toString();\n },\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Config } from './types.gen';\n\nexport type ServerSentEventsOptions<TData = unknown> = Omit<RequestInit, 'method'> &\n Pick<Config, 'method' | 'responseTransformer' | 'responseValidator'> & {\n /**\n * Fetch API implementation. You can use this option to provide a custom\n * fetch instance.\n *\n * @default globalThis.fetch\n */\n fetch?: typeof fetch;\n /**\n * Implementing clients can call request interceptors inside this hook.\n */\n onRequest?: (url: string, init: RequestInit) => Promise<Request>;\n /**\n * Callback invoked when a network or parsing error occurs during streaming.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param error The error that occurred.\n */\n onSseError?: (error: unknown) => void;\n /**\n * Callback invoked when an event is streamed from the server.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param event Event streamed from the server.\n * @returns Nothing (void).\n */\n onSseEvent?: (event: StreamEvent<TData>) => void;\n serializedBody?: RequestInit['body'];\n /**\n * Default retry delay in milliseconds.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 3000\n */\n sseDefaultRetryDelay?: number;\n /**\n * Maximum number of retry attempts before giving up.\n */\n sseMaxRetryAttempts?: number;\n /**\n * Maximum retry delay in milliseconds.\n *\n * Applies only when exponential backoff is used.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 30000\n */\n sseMaxRetryDelay?: number;\n /**\n * Optional sleep function for retry backoff.\n *\n * Defaults to using `setTimeout`.\n */\n sseSleepFn?: (ms: number) => Promise<void>;\n url: string;\n };\n\nexport interface StreamEvent<TData = unknown> {\n data: TData;\n event?: string;\n id?: string;\n retry?: number;\n}\n\nexport type ServerSentEventsResult<TData = unknown, TReturn = void, TNext = unknown> = {\n stream: AsyncGenerator<\n TData extends Record<string, unknown> ? TData[keyof TData] : TData,\n TReturn,\n TNext\n >;\n};\n\nexport function createSseClient<TData = unknown>({\n onRequest,\n onSseError,\n onSseEvent,\n responseTransformer,\n responseValidator,\n sseDefaultRetryDelay,\n sseMaxRetryAttempts,\n sseMaxRetryDelay,\n sseSleepFn,\n url,\n ...options\n}: ServerSentEventsOptions): ServerSentEventsResult<TData> {\n let lastEventId: string | undefined;\n\n const sleep = sseSleepFn ?? ((ms: number) => new Promise((resolve) => setTimeout(resolve, ms)));\n\n const createStream = async function* () {\n let retryDelay: number = sseDefaultRetryDelay ?? 3000;\n let attempt = 0;\n const signal = options.signal ?? new AbortController().signal;\n\n while (true) {\n if (signal.aborted) break;\n\n attempt++;\n\n const headers =\n options.headers instanceof Headers\n ? options.headers\n : new Headers(options.headers as Record<string, string> | undefined);\n\n if (lastEventId !== undefined) {\n headers.set('Last-Event-ID', lastEventId);\n }\n\n try {\n const requestInit: RequestInit = {\n redirect: 'follow',\n ...options,\n body: options.serializedBody,\n headers,\n signal,\n };\n let request = new Request(url, requestInit);\n if (onRequest) {\n request = await onRequest(url, requestInit);\n }\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = options.fetch ?? globalThis.fetch;\n const response = await _fetch(request);\n\n if (!response.ok) throw new Error(`SSE failed: ${response.status} ${response.statusText}`);\n\n if (!response.body) throw new Error('No body in SSE response');\n\n const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();\n\n let buffer = '';\n\n const abortHandler = () => {\n try {\n reader.cancel();\n } catch {\n // noop\n }\n };\n\n signal.addEventListener('abort', abortHandler);\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += value;\n buffer = buffer.replace(/\\r\\n?/g, '\\n'); // normalize line endings\n\n const chunks = buffer.split('\\n\\n');\n buffer = chunks.pop() ?? '';\n\n for (const chunk of chunks) {\n const lines = chunk.split('\\n');\n const dataLines: Array<string> = [];\n let eventName: string | undefined;\n\n for (const line of lines) {\n if (line.startsWith('data:')) {\n dataLines.push(line.replace(/^data:\\s*/, ''));\n } else if (line.startsWith('event:')) {\n eventName = line.replace(/^event:\\s*/, '');\n } else if (line.startsWith('id:')) {\n lastEventId = line.replace(/^id:\\s*/, '');\n } else if (line.startsWith('retry:')) {\n const parsed = Number.parseInt(line.replace(/^retry:\\s*/, ''), 10);\n if (!Number.isNaN(parsed)) {\n retryDelay = parsed;\n }\n }\n }\n\n let data: unknown;\n let parsedJson = false;\n\n if (dataLines.length) {\n const rawData = dataLines.join('\\n');\n try {\n data = JSON.parse(rawData);\n parsedJson = true;\n } catch {\n data = rawData;\n }\n }\n\n if (parsedJson) {\n if (responseValidator) {\n await responseValidator(data);\n }\n\n if (responseTransformer) {\n data = await responseTransformer(data);\n }\n }\n\n onSseEvent?.({\n data,\n event: eventName,\n id: lastEventId,\n retry: retryDelay,\n });\n\n if (dataLines.length) {\n yield data as any;\n }\n }\n }\n } finally {\n signal.removeEventListener('abort', abortHandler);\n reader.releaseLock();\n }\n\n break; // exit loop on normal completion\n } catch (error) {\n // connection failed or aborted; retry after delay\n onSseError?.(error);\n\n if (sseMaxRetryAttempts !== undefined && attempt >= sseMaxRetryAttempts) {\n break; // stop after firing error\n }\n\n // exponential backoff: double retry each attempt, cap at 30s\n const backoff = Math.min(retryDelay * 2 ** (attempt - 1), sseMaxRetryDelay ?? 30000);\n await sleep(backoff);\n }\n }\n };\n\n const stream = createStream();\n\n return { stream };\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\ninterface SerializeOptions<T> extends SerializePrimitiveOptions, SerializerOptions<T> {}\n\ninterface SerializePrimitiveOptions {\n allowReserved?: boolean;\n name: string;\n}\n\nexport interface SerializerOptions<T> {\n /**\n * @default true\n */\n explode: boolean;\n style: T;\n}\n\nexport type ArrayStyle = 'form' | 'spaceDelimited' | 'pipeDelimited';\nexport type ArraySeparatorStyle = ArrayStyle | MatrixStyle;\ntype MatrixStyle = 'label' | 'matrix' | 'simple';\nexport type ObjectStyle = 'form' | 'deepObject';\ntype ObjectSeparatorStyle = ObjectStyle | MatrixStyle;\n\ninterface SerializePrimitiveParam extends SerializePrimitiveOptions {\n value: string;\n}\n\nexport const separatorArrayExplode = (style: ArraySeparatorStyle): '.' | ';' | ',' | '&' => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const separatorArrayNoExplode = (style: ArraySeparatorStyle): ',' | '|' | '%20' => {\n switch (style) {\n case 'form':\n return ',';\n case 'pipeDelimited':\n return '|';\n case 'spaceDelimited':\n return '%20';\n default:\n return ',';\n }\n};\n\nexport const separatorObjectExplode = (style: ObjectSeparatorStyle): '.' | ';' | ',' | '&' => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const serializeArrayParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n}: SerializeOptions<ArraySeparatorStyle> & {\n value: unknown[];\n}): string => {\n if (!explode) {\n const joinedValues = (\n allowReserved ? value : value.map((v) => encodeURIComponent(v as string))\n ).join(separatorArrayNoExplode(style));\n switch (style) {\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n case 'simple':\n return joinedValues;\n default:\n return `${name}=${joinedValues}`;\n }\n }\n\n const separator = separatorArrayExplode(style);\n const joinedValues = value\n .map((v) => {\n if (style === 'label' || style === 'simple') {\n return allowReserved ? v : encodeURIComponent(v as string);\n }\n\n return serializePrimitiveParam({\n allowReserved,\n name,\n value: v as string,\n });\n })\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n\nexport const serializePrimitiveParam = ({\n allowReserved,\n name,\n value,\n}: SerializePrimitiveParam): string => {\n if (value === undefined || value === null) {\n return '';\n }\n\n if (typeof value === 'object') {\n throw new Error(\n 'Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.',\n );\n }\n\n return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;\n};\n\nexport const serializeObjectParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n valueOnly,\n}: SerializeOptions<ObjectSeparatorStyle> & {\n value: Record<string, unknown> | Date;\n valueOnly?: boolean;\n}): string => {\n if (value instanceof Date) {\n return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;\n }\n\n if (style !== 'deepObject' && !explode) {\n let values: string[] = [];\n Object.entries(value).forEach(([key, v]) => {\n values = [...values, key, allowReserved ? (v as string) : encodeURIComponent(v as string)];\n });\n const joinedValues = values.join(',');\n switch (style) {\n case 'form':\n return `${name}=${joinedValues}`;\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n default:\n return joinedValues;\n }\n }\n\n const separator = separatorObjectExplode(style);\n const joinedValues = Object.entries(value)\n .map(([key, v]) =>\n serializePrimitiveParam({\n allowReserved,\n name: style === 'deepObject' ? `${name}[${key}]` : key,\n value: v as string,\n }),\n )\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { BodySerializer, QuerySerializer } from './bodySerializer.gen';\nimport {\n type ArraySeparatorStyle,\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from './pathSerializer.gen';\n\nexport interface PathSerializer {\n path: Record<string, unknown>;\n url: string;\n}\n\nexport const PATH_PARAM_RE: RegExp = /\\{[^{}]+\\}/g;\n\nexport const defaultPathSerializer = ({ path, url: _url }: PathSerializer): string => {\n let url = _url;\n const matches = _url.match(PATH_PARAM_RE);\n if (matches) {\n for (const match of matches) {\n let explode = false;\n let name = match.substring(1, match.length - 1);\n let style: ArraySeparatorStyle = 'simple';\n\n if (name.endsWith('*')) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n\n if (name.startsWith('.')) {\n name = name.substring(1);\n style = 'label';\n } else if (name.startsWith(';')) {\n name = name.substring(1);\n style = 'matrix';\n }\n\n const value = path[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n url = url.replace(match, serializeArrayParam({ explode, name, style, value }));\n continue;\n }\n\n if (typeof value === 'object') {\n url = url.replace(\n match,\n serializeObjectParam({\n explode,\n name,\n style,\n value: value as Record<string, unknown>,\n valueOnly: true,\n }),\n );\n continue;\n }\n\n if (style === 'matrix') {\n url = url.replace(\n match,\n `;${serializePrimitiveParam({\n name,\n value: value as string,\n })}`,\n );\n continue;\n }\n\n const replaceValue = encodeURIComponent(\n style === 'label' ? `.${value as string}` : (value as string),\n );\n url = url.replace(match, replaceValue);\n }\n }\n return url;\n};\n\nexport const getUrl = ({\n baseUrl,\n path,\n query,\n querySerializer,\n url: _url,\n}: {\n baseUrl?: string;\n path?: Record<string, unknown>;\n query?: Record<string, unknown>;\n querySerializer: QuerySerializer;\n url: string;\n}): string => {\n const pathUrl = _url.startsWith('/') ? _url : `/${_url}`;\n let url = (baseUrl ?? '') + pathUrl;\n if (path) {\n url = defaultPathSerializer({ path, url });\n }\n let search = query ? querySerializer(query) : '';\n if (search.startsWith('?')) {\n search = search.substring(1);\n }\n if (search) {\n url += `?${search}`;\n }\n return url;\n};\n\nexport function getValidRequestBody(options: {\n body?: unknown;\n bodySerializer?: BodySerializer | null;\n serializedBody?: unknown;\n}): unknown {\n const hasBody = options.body !== undefined;\n const isSerializedBody = hasBody && options.bodySerializer;\n\n if (isSerializedBody) {\n if ('serializedBody' in options) {\n const hasSerializedBody =\n options.serializedBody !== undefined && options.serializedBody !== '';\n\n return hasSerializedBody ? options.serializedBody : null;\n }\n\n // not all clients implement a serializedBody property (i.e., client-axios)\n return options.body !== '' ? options.body : null;\n }\n\n // plain/text body\n if (hasBody) {\n return options.body;\n }\n\n // no body was provided\n return undefined;\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nexport type AuthToken = string | undefined;\n\nexport interface Auth {\n /**\n * Which part of the request do we use to send the auth?\n *\n * @default 'header'\n */\n in?: 'header' | 'query' | 'cookie';\n /**\n * A unique identifier for the security scheme.\n *\n * Defined only when there are multiple security schemes whose `Auth`\n * shape would otherwise be identical.\n */\n key?: string;\n /**\n * Header or query parameter name.\n *\n * @default 'Authorization'\n */\n name?: string;\n scheme?: 'basic' | 'bearer';\n type: 'apiKey' | 'http';\n}\n\nexport const getAuthToken = async (\n auth: Auth,\n callback: ((auth: Auth) => Promise<AuthToken> | AuthToken) | AuthToken,\n): Promise<string | undefined> => {\n const token = typeof callback === 'function' ? await callback(auth) : callback;\n\n if (!token) {\n return;\n }\n\n if (auth.scheme === 'bearer') {\n return `Bearer ${token}`;\n }\n\n if (auth.scheme === 'basic') {\n return `Basic ${btoa(token)}`;\n }\n\n return token;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { getAuthToken } from '../core/auth.gen';\nimport type { QuerySerializerOptions } from '../core/bodySerializer.gen';\nimport { jsonBodySerializer } from '../core/bodySerializer.gen';\nimport {\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from '../core/pathSerializer.gen';\nimport { getUrl } from '../core/utils.gen';\nimport type { Client, ClientOptions, Config, RequestOptions } from './types.gen';\n\nexport const createQuerySerializer = <T = unknown>({\n parameters = {},\n ...args\n}: QuerySerializerOptions = {}): ((queryParams: T) => string) => {\n const querySerializer = (queryParams: T): string => {\n const search: string[] = [];\n if (queryParams && typeof queryParams === 'object') {\n for (const name in queryParams) {\n const value = queryParams[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n const options = parameters[name] || args;\n\n if (Array.isArray(value)) {\n const serializedArray = serializeArrayParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'form',\n value,\n ...options.array,\n });\n if (serializedArray) search.push(serializedArray);\n } else if (typeof value === 'object') {\n const serializedObject = serializeObjectParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'deepObject',\n value: value as Record<string, unknown>,\n ...options.object,\n });\n if (serializedObject) search.push(serializedObject);\n } else {\n const serializedPrimitive = serializePrimitiveParam({\n allowReserved: options.allowReserved,\n name,\n value: value as string,\n });\n if (serializedPrimitive) search.push(serializedPrimitive);\n }\n }\n }\n return search.join('&');\n };\n return querySerializer;\n};\n\n/**\n * Infers parseAs value from provided Content-Type header.\n */\nexport const getParseAs = (contentType: string | null): Exclude<Config['parseAs'], 'auto'> => {\n if (!contentType) {\n // If no Content-Type header is provided, the best we can do is return the raw response body,\n // which is effectively the same as the 'stream' option.\n return 'stream';\n }\n\n const cleanContent = contentType.split(';')[0]?.trim();\n\n if (!cleanContent) {\n return;\n }\n\n if (cleanContent.startsWith('application/json') || cleanContent.endsWith('+json')) {\n return 'json';\n }\n\n if (cleanContent === 'multipart/form-data') {\n return 'formData';\n }\n\n if (\n ['application/', 'audio/', 'image/', 'video/'].some((type) => cleanContent.startsWith(type))\n ) {\n return 'blob';\n }\n\n if (cleanContent.startsWith('text/')) {\n return 'text';\n }\n\n return;\n};\n\nconst checkForExistence = (\n options: Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n },\n name?: string,\n): boolean => {\n if (!name) {\n return false;\n }\n if (\n options.headers.has(name) ||\n options.query?.[name] ||\n options.headers.get('Cookie')?.includes(`${name}=`)\n ) {\n return true;\n }\n return false;\n};\n\nexport async function setAuthParams(\n options: Pick<RequestOptions, 'auth' | 'query' | 'security'> & {\n headers: Headers;\n },\n): Promise<void> {\n for (const auth of options.security ?? []) {\n if (checkForExistence(options, auth.name)) {\n continue;\n }\n\n const token = await getAuthToken(auth, options.auth);\n\n if (!token) {\n continue;\n }\n\n const name = auth.name ?? 'Authorization';\n\n switch (auth.in) {\n case 'query':\n if (!options.query) {\n options.query = {};\n }\n options.query[name] = token;\n break;\n case 'cookie':\n options.headers.append('Cookie', `${name}=${token}`);\n break;\n case 'header':\n default:\n options.headers.set(name, token);\n break;\n }\n }\n}\n\nexport const buildUrl: Client['buildUrl'] = (options) =>\n getUrl({\n baseUrl: options.baseUrl as string,\n path: options.path,\n query: options.query,\n querySerializer:\n typeof options.querySerializer === 'function'\n ? options.querySerializer\n : createQuerySerializer(options.querySerializer),\n url: options.url,\n });\n\nexport const mergeConfigs = (a: Config, b: Config): Config => {\n const config = { ...a, ...b };\n if (config.baseUrl?.endsWith('/')) {\n config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);\n }\n config.headers = mergeHeaders(a.headers, b.headers);\n return config;\n};\n\nconst headersEntries = (headers: Headers): Array<[string, string]> => {\n const entries: Array<[string, string]> = [];\n headers.forEach((value, key) => {\n entries.push([key, value]);\n });\n return entries;\n};\n\nexport const mergeHeaders = (\n ...headers: Array<Required<Config>['headers'] | undefined>\n): Headers => {\n const mergedHeaders = new Headers();\n for (const header of headers) {\n if (!header) {\n continue;\n }\n\n const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header);\n\n for (const [key, value] of iterator) {\n if (value === null) {\n mergedHeaders.delete(key);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n mergedHeaders.append(key, v as string);\n }\n } else if (value !== undefined) {\n // assume object headers are meant to be JSON stringified, i.e., their\n // content value in OpenAPI specification is 'application/json'\n mergedHeaders.set(\n key,\n typeof value === 'object' ? JSON.stringify(value) : (value as string),\n );\n }\n }\n }\n return mergedHeaders;\n};\n\ntype ErrInterceptor<Err, Res, Req, Options> = (\n error: Err,\n /** response may be undefined due to a network error where no response object is produced */\n response: Res | undefined,\n /** request may be undefined, because error may be from building the request object itself */\n request: Req | undefined,\n options: Options,\n) => Err | Promise<Err>;\n\ntype ReqInterceptor<Req, Options> = (request: Req, options: Options) => Req | Promise<Req>;\n\ntype ResInterceptor<Res, Req, Options> = (\n response: Res,\n request: Req,\n options: Options,\n) => Res | Promise<Res>;\n\nclass Interceptors<Interceptor> {\n fns: Array<Interceptor | null> = [];\n\n clear(): void {\n this.fns = [];\n }\n\n eject(id: number | Interceptor): void {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = null;\n }\n }\n\n exists(id: number | Interceptor): boolean {\n const index = this.getInterceptorIndex(id);\n return Boolean(this.fns[index]);\n }\n\n getInterceptorIndex(id: number | Interceptor): number {\n if (typeof id === 'number') {\n return this.fns[id] ? id : -1;\n }\n return this.fns.indexOf(id);\n }\n\n update(id: number | Interceptor, fn: Interceptor): number | Interceptor | false {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = fn;\n return id;\n }\n return false;\n }\n\n use(fn: Interceptor): number {\n this.fns.push(fn);\n return this.fns.length - 1;\n }\n}\n\nexport interface Middleware<Req, Res, Err, Options> {\n error: Interceptors<ErrInterceptor<Err, Res, Req, Options>>;\n request: Interceptors<ReqInterceptor<Req, Options>>;\n response: Interceptors<ResInterceptor<Res, Req, Options>>;\n}\n\nexport const createInterceptors = <Req, Res, Err, Options>(): Middleware<\n Req,\n Res,\n Err,\n Options\n> => ({\n error: new Interceptors<ErrInterceptor<Err, Res, Req, Options>>(),\n request: new Interceptors<ReqInterceptor<Req, Options>>(),\n response: new Interceptors<ResInterceptor<Res, Req, Options>>(),\n});\n\nconst defaultQuerySerializer = createQuerySerializer({\n allowReserved: false,\n array: {\n explode: true,\n style: 'form',\n },\n object: {\n explode: true,\n style: 'deepObject',\n },\n});\n\nconst defaultHeaders = {\n 'Content-Type': 'application/json',\n};\n\nexport const createConfig = <T extends ClientOptions = ClientOptions>(\n override: Config<Omit<ClientOptions, keyof T> & T> = {},\n): Config<Omit<ClientOptions, keyof T> & T> => ({\n ...jsonBodySerializer,\n headers: defaultHeaders,\n parseAs: 'auto',\n querySerializer: defaultQuerySerializer,\n ...override,\n});\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { createSseClient } from '../core/serverSentEvents.gen';\nimport type { HttpMethod } from '../core/types.gen';\nimport { getValidRequestBody } from '../core/utils.gen';\nimport type { Client, Config, RequestOptions, ResolvedRequestOptions } from './types.gen';\nimport {\n buildUrl,\n createConfig,\n createInterceptors,\n getParseAs,\n mergeConfigs,\n mergeHeaders,\n setAuthParams,\n} from './utils.gen';\n\ntype ReqInit = Omit<RequestInit, 'body' | 'headers'> & {\n body?: any;\n headers: ReturnType<typeof mergeHeaders>;\n};\n\nexport const createClient = (config: Config = {}): Client => {\n let _config = mergeConfigs(createConfig(), config);\n\n const getConfig = (): Config => ({ ..._config });\n\n const setConfig = (config: Config): Config => {\n _config = mergeConfigs(_config, config);\n return getConfig();\n };\n\n const interceptors = createInterceptors<Request, Response, unknown, ResolvedRequestOptions>();\n\n const beforeRequest = async <\n TData = unknown,\n TResponseStyle extends 'data' | 'fields' = 'fields',\n ThrowOnError extends boolean = boolean,\n Url extends string = string,\n >(\n options: RequestOptions<TData, TResponseStyle, ThrowOnError, Url>,\n ) => {\n const opts = {\n ..._config,\n ...options,\n fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,\n headers: mergeHeaders(_config.headers, options.headers),\n serializedBody: undefined as string | undefined,\n };\n\n if (opts.security) {\n await setAuthParams(opts);\n }\n\n if (opts.requestValidator) {\n await opts.requestValidator(opts);\n }\n\n if (opts.body !== undefined && opts.bodySerializer) {\n opts.serializedBody = opts.bodySerializer(opts.body) as string | undefined;\n }\n\n // remove Content-Type header if body is empty to avoid sending invalid requests\n if (opts.body === undefined || opts.serializedBody === '') {\n opts.headers.delete('Content-Type');\n }\n\n const resolvedOpts = opts as typeof opts &\n ResolvedRequestOptions<TResponseStyle, ThrowOnError, Url>;\n const url = buildUrl(resolvedOpts);\n\n return { opts: resolvedOpts, url };\n };\n\n const request: Client['request'] = async (options) => {\n const throwOnError = options.throwOnError ?? _config.throwOnError;\n const responseStyle = options.responseStyle ?? _config.responseStyle;\n\n let request: Request | undefined;\n let response: Response | undefined;\n\n try {\n const { opts, url } = await beforeRequest(options);\n const requestInit: ReqInit = {\n redirect: 'follow',\n ...opts,\n body: getValidRequestBody(opts),\n };\n\n request = new Request(url, requestInit);\n\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = opts.fetch!;\n\n response = await _fetch(request);\n\n for (const fn of interceptors.response.fns) {\n if (fn) {\n response = await fn(response, request, opts);\n }\n }\n\n const result = {\n request,\n response,\n };\n\n if (response.ok) {\n const parseAs =\n (opts.parseAs === 'auto'\n ? getParseAs(response.headers.get('Content-Type'))\n : opts.parseAs) ?? 'json';\n\n if (response.status === 204 || response.headers.get('Content-Length') === '0') {\n let emptyData: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'text':\n emptyData = await response[parseAs]();\n break;\n case 'formData':\n emptyData = new FormData();\n break;\n case 'stream':\n emptyData = response.body;\n break;\n case 'json':\n default:\n emptyData = {};\n break;\n }\n return opts.responseStyle === 'data'\n ? emptyData\n : {\n data: emptyData,\n ...result,\n };\n }\n\n let data: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'formData':\n case 'text':\n data = await response[parseAs]();\n break;\n case 'json': {\n // Some servers return 200 with no Content-Length and empty body.\n // response.json() would throw; read as text and parse if non-empty.\n const text = await response.text();\n data = text ? JSON.parse(text) : {};\n break;\n }\n case 'stream':\n return opts.responseStyle === 'data'\n ? response.body\n : {\n data: response.body,\n ...result,\n };\n }\n\n if (parseAs === 'json') {\n if (opts.responseValidator) {\n await opts.responseValidator(data);\n }\n\n if (opts.responseTransformer) {\n data = await opts.responseTransformer(data);\n }\n }\n\n return opts.responseStyle === 'data'\n ? data\n : {\n data,\n ...result,\n };\n }\n\n const textError = await response.text();\n let jsonError: unknown;\n\n try {\n jsonError = JSON.parse(textError);\n } catch {\n // noop\n }\n\n throw jsonError ?? textError;\n } catch (error) {\n let finalError = error;\n\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = await fn(finalError, response, request, options as ResolvedRequestOptions);\n }\n }\n\n finalError = finalError || {};\n\n if (throwOnError) {\n throw finalError;\n }\n\n // TODO: we probably want to return error and improve types\n return responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n request,\n response,\n };\n }\n };\n\n const makeMethodFn = (method: Uppercase<HttpMethod>) => (options: RequestOptions) =>\n request({ ...options, method });\n\n const makeSseFn = (method: Uppercase<HttpMethod>) => async (options: RequestOptions) => {\n const { opts, url } = await beforeRequest(options);\n return createSseClient({\n ...opts,\n body: opts.body as BodyInit | null | undefined,\n method,\n onRequest: async (url, init) => {\n let request = new Request(url, init);\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n return request;\n },\n serializedBody: getValidRequestBody(opts) as BodyInit | null | undefined,\n url,\n });\n };\n\n const _buildUrl: Client['buildUrl'] = (options) => buildUrl({ ..._config, ...options });\n\n return {\n buildUrl: _buildUrl,\n connect: makeMethodFn('CONNECT'),\n delete: makeMethodFn('DELETE'),\n get: makeMethodFn('GET'),\n getConfig,\n head: makeMethodFn('HEAD'),\n interceptors,\n options: makeMethodFn('OPTIONS'),\n patch: makeMethodFn('PATCH'),\n post: makeMethodFn('POST'),\n put: makeMethodFn('PUT'),\n request,\n setConfig,\n sse: {\n connect: makeSseFn('CONNECT'),\n delete: makeSseFn('DELETE'),\n get: makeSseFn('GET'),\n head: makeSseFn('HEAD'),\n options: makeSseFn('OPTIONS'),\n patch: makeSseFn('PATCH'),\n post: makeSseFn('POST'),\n put: makeSseFn('PUT'),\n trace: makeSseFn('TRACE'),\n },\n trace: makeMethodFn('TRACE'),\n } as Client;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { type Client, type ClientOptions, type Config, createClient, createConfig } from './client';\nimport type { ClientOptions as ClientOptions2 } from './types.gen';\n\n/**\n * The `createClientConfig()` function will be called on client initialization\n * and the returned object will become the client's initial configuration.\n *\n * You may want to initialize your client this way instead of calling\n * `setConfig()`. This is useful for example if you're using Next.js\n * to ensure your client always has the correct values.\n */\nexport type CreateClientConfig<T extends ClientOptions = ClientOptions2> = (override?: Config<ClientOptions & T>) => Config<Required<ClientOptions> & T>;\n\nexport const client: Client = createClient(createConfig<ClientOptions2>({ baseUrl: 'https://stake-for-fee-api.meteora.ag' }));\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Client, ClientMeta, Options as Options2, RequestResult, TDataShape } from './client';\nimport { client } from './client.gen';\nimport type { GetAnalyticsAllData, GetAnalyticsAllResponses, GetVaultAllData, GetVaultAllResponses, GetVaultByVaultAddressData, GetVaultByVaultAddressResponses, GetVaultFilterData, GetVaultFilterResponses } from './types.gen';\n\nexport type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean, TResponse = unknown> = Options2<TData, ThrowOnError, TResponse> & {\n /**\n * You can provide a client instance returned by `createClient()` instead of\n * individual options. This might be also useful if you want to implement a\n * custom client.\n */\n client?: Client;\n /**\n * You can pass arbitrary values through the `meta` object. This can be\n * used to access values that aren't defined as part of the SDK function.\n */\n meta?: keyof ClientMeta extends never ? Record<string, unknown> : ClientMeta;\n};\n\nclass HeyApiClient {\n protected client: Client;\n \n constructor(args?: {\n client?: Client;\n }) {\n this.client = args?.client ?? client;\n }\n}\n\nclass HeyApiRegistry<T> {\n private readonly defaultKey = 'default';\n \n private readonly instances: Map<string, T> = new Map();\n \n get(key?: string): T {\n const instance = this.instances.get(key ?? this.defaultKey);\n if (!instance) {\n throw new Error(`No SDK client found. Create one with \"new Stake2EarnApi()\" to fix this error.`);\n }\n return instance;\n }\n \n set(value: T, key?: string): void {\n this.instances.set(key ?? this.defaultKey, value);\n }\n}\n\nexport class Analytics extends HeyApiClient {\n public getAllAnalytics<ThrowOnError extends boolean = false>(options?: Options<GetAnalyticsAllData, ThrowOnError>): RequestResult<GetAnalyticsAllResponses, unknown, ThrowOnError> {\n return (options?.client ?? this.client).get<GetAnalyticsAllResponses, unknown, ThrowOnError>({ url: '/analytics/all', ...options });\n }\n}\n\nexport class Vaults extends HeyApiClient {\n public getAllVaults<ThrowOnError extends boolean = false>(options?: Options<GetVaultAllData, ThrowOnError>): RequestResult<GetVaultAllResponses, unknown, ThrowOnError> {\n return (options?.client ?? this.client).get<GetVaultAllResponses, unknown, ThrowOnError>({ url: '/vault/all', ...options });\n }\n \n public filterVaults<ThrowOnError extends boolean = false>(options?: Options<GetVaultFilterData, ThrowOnError>): RequestResult<GetVaultFilterResponses, unknown, ThrowOnError> {\n return (options?.client ?? this.client).get<GetVaultFilterResponses, unknown, ThrowOnError>({ url: '/vault/filter', ...options });\n }\n \n public getOneVault<ThrowOnError extends boolean = false>(options: Options<GetVaultByVaultAddressData, ThrowOnError>): RequestResult<GetVaultByVaultAddressResponses, unknown, ThrowOnError> {\n return (options.client ?? this.client).get<GetVaultByVaultAddressResponses, unknown, ThrowOnError>({ url: '/vault/{vault_address}', ...options });\n }\n}\n\nexport class Stake2EarnApi extends HeyApiClient {\n public static readonly __registry: HeyApiRegistry<Stake2EarnApi> = new HeyApiRegistry<Stake2EarnApi>();\n \n constructor(args?: {\n client?: Client;\n key?: string;\n }) {\n super(args);\n Stake2EarnApi.__registry.set(this, args?.key);\n }\n \n private _analytics?: Analytics;\n get analytics(): Analytics {\n return this._analytics ??= new Analytics({ client: this.client });\n }\n \n private _vaults?: Vaults;\n get vaults(): Vaults {\n return this._vaults ??= new Vaults({ client: this.client });\n }\n}\n"],"mappings":"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"}