@nodetool-ai/runtime 0.7.0-rc.11
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.
- package/dist/bridge-protocol.d.ts +39 -0
- package/dist/bridge-protocol.d.ts.map +1 -0
- package/dist/bridge-protocol.js +39 -0
- package/dist/bridge-protocol.js.map +1 -0
- package/dist/comfy-executor.d.ts +41 -0
- package/dist/comfy-executor.d.ts.map +1 -0
- package/dist/comfy-executor.js +305 -0
- package/dist/comfy-executor.js.map +1 -0
- package/dist/context-packer.d.ts +22 -0
- package/dist/context-packer.d.ts.map +1 -0
- package/dist/context-packer.js +66 -0
- package/dist/context-packer.js.map +1 -0
- package/dist/context.d.ts +405 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +1455 -0
- package/dist/context.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/node-executor.d.ts +53 -0
- package/dist/node-executor.d.ts.map +1 -0
- package/dist/node-executor.js +9 -0
- package/dist/node-executor.js.map +1 -0
- package/dist/providers/aki-manifest.json +34 -0
- package/dist/providers/aki-provider.d.ts +65 -0
- package/dist/providers/aki-provider.d.ts.map +1 -0
- package/dist/providers/aki-provider.js +517 -0
- package/dist/providers/aki-provider.js.map +1 -0
- package/dist/providers/anthropic-provider.d.ts +55 -0
- package/dist/providers/anthropic-provider.d.ts.map +1 -0
- package/dist/providers/anthropic-provider.js +563 -0
- package/dist/providers/anthropic-provider.js.map +1 -0
- package/dist/providers/base-provider.d.ts +194 -0
- package/dist/providers/base-provider.d.ts.map +1 -0
- package/dist/providers/base-provider.js +515 -0
- package/dist/providers/base-provider.js.map +1 -0
- package/dist/providers/cerebras-provider.d.ts +20 -0
- package/dist/providers/cerebras-provider.d.ts.map +1 -0
- package/dist/providers/cerebras-provider.js +52 -0
- package/dist/providers/cerebras-provider.js.map +1 -0
- package/dist/providers/claude-agent-provider.d.ts +107 -0
- package/dist/providers/claude-agent-provider.d.ts.map +1 -0
- package/dist/providers/claude-agent-provider.js +586 -0
- package/dist/providers/claude-agent-provider.js.map +1 -0
- package/dist/providers/cohere-provider.d.ts +36 -0
- package/dist/providers/cohere-provider.d.ts.map +1 -0
- package/dist/providers/cohere-provider.js +116 -0
- package/dist/providers/cohere-provider.js.map +1 -0
- package/dist/providers/cost-calculator.d.ts +109 -0
- package/dist/providers/cost-calculator.d.ts.map +1 -0
- package/dist/providers/cost-calculator.js +475 -0
- package/dist/providers/cost-calculator.js.map +1 -0
- package/dist/providers/deepseek-provider.d.ts +25 -0
- package/dist/providers/deepseek-provider.d.ts.map +1 -0
- package/dist/providers/deepseek-provider.js +58 -0
- package/dist/providers/deepseek-provider.js.map +1 -0
- package/dist/providers/fake-provider.d.ts +52 -0
- package/dist/providers/fake-provider.d.ts.map +1 -0
- package/dist/providers/fake-provider.js +107 -0
- package/dist/providers/fake-provider.js.map +1 -0
- package/dist/providers/fal-provider.d.ts +32 -0
- package/dist/providers/fal-provider.d.ts.map +1 -0
- package/dist/providers/fal-provider.js +445 -0
- package/dist/providers/fal-provider.js.map +1 -0
- package/dist/providers/gemini-provider.d.ts +109 -0
- package/dist/providers/gemini-provider.d.ts.map +1 -0
- package/dist/providers/gemini-provider.js +943 -0
- package/dist/providers/gemini-provider.js.map +1 -0
- package/dist/providers/groq-provider.d.ts +20 -0
- package/dist/providers/groq-provider.d.ts.map +1 -0
- package/dist/providers/groq-provider.js +52 -0
- package/dist/providers/groq-provider.js.map +1 -0
- package/dist/providers/huggingface-provider.d.ts +59 -0
- package/dist/providers/huggingface-provider.d.ts.map +1 -0
- package/dist/providers/huggingface-provider.js +305 -0
- package/dist/providers/huggingface-provider.js.map +1 -0
- package/dist/providers/index.d.ts +69 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +137 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/jina-provider.d.ts +37 -0
- package/dist/providers/jina-provider.d.ts.map +1 -0
- package/dist/providers/jina-provider.js +118 -0
- package/dist/providers/jina-provider.js.map +1 -0
- package/dist/providers/kie-provider.d.ts +19 -0
- package/dist/providers/kie-provider.d.ts.map +1 -0
- package/dist/providers/kie-provider.js +118 -0
- package/dist/providers/kie-provider.js.map +1 -0
- package/dist/providers/llama-provider.d.ts +49 -0
- package/dist/providers/llama-provider.d.ts.map +1 -0
- package/dist/providers/llama-provider.js +381 -0
- package/dist/providers/llama-provider.js.map +1 -0
- package/dist/providers/lmstudio-provider.d.ts +22 -0
- package/dist/providers/lmstudio-provider.d.ts.map +1 -0
- package/dist/providers/lmstudio-provider.js +63 -0
- package/dist/providers/lmstudio-provider.js.map +1 -0
- package/dist/providers/manifest-models.d.ts +12 -0
- package/dist/providers/manifest-models.d.ts.map +1 -0
- package/dist/providers/manifest-models.js +96 -0
- package/dist/providers/manifest-models.js.map +1 -0
- package/dist/providers/meshy-provider.d.ts +53 -0
- package/dist/providers/meshy-provider.d.ts.map +1 -0
- package/dist/providers/meshy-provider.js +230 -0
- package/dist/providers/meshy-provider.js.map +1 -0
- package/dist/providers/minimax-provider.d.ts +66 -0
- package/dist/providers/minimax-provider.d.ts.map +1 -0
- package/dist/providers/minimax-provider.js +531 -0
- package/dist/providers/minimax-provider.js.map +1 -0
- package/dist/providers/mistral-provider.d.ts +26 -0
- package/dist/providers/mistral-provider.d.ts.map +1 -0
- package/dist/providers/mistral-provider.js +74 -0
- package/dist/providers/mistral-provider.js.map +1 -0
- package/dist/providers/moonshot-provider.d.ts +24 -0
- package/dist/providers/moonshot-provider.d.ts.map +1 -0
- package/dist/providers/moonshot-provider.js +43 -0
- package/dist/providers/moonshot-provider.js.map +1 -0
- package/dist/providers/ollama-provider.d.ts +71 -0
- package/dist/providers/ollama-provider.d.ts.map +1 -0
- package/dist/providers/ollama-provider.js +480 -0
- package/dist/providers/ollama-provider.js.map +1 -0
- package/dist/providers/openai-provider.d.ts +103 -0
- package/dist/providers/openai-provider.d.ts.map +1 -0
- package/dist/providers/openai-provider.js +917 -0
- package/dist/providers/openai-provider.js.map +1 -0
- package/dist/providers/openrouter-provider.d.ts +49 -0
- package/dist/providers/openrouter-provider.d.ts.map +1 -0
- package/dist/providers/openrouter-provider.js +147 -0
- package/dist/providers/openrouter-provider.js.map +1 -0
- package/dist/providers/provider-registry.d.ts +24 -0
- package/dist/providers/provider-registry.d.ts.map +1 -0
- package/dist/providers/provider-registry.js +124 -0
- package/dist/providers/provider-registry.js.map +1 -0
- package/dist/providers/python-provider.d.ts +75 -0
- package/dist/providers/python-provider.d.ts.map +1 -0
- package/dist/providers/python-provider.js +157 -0
- package/dist/providers/python-provider.js.map +1 -0
- package/dist/providers/replicate-provider.d.ts +73 -0
- package/dist/providers/replicate-provider.d.ts.map +1 -0
- package/dist/providers/replicate-provider.js +484 -0
- package/dist/providers/replicate-provider.js.map +1 -0
- package/dist/providers/rodin-provider.d.ts +41 -0
- package/dist/providers/rodin-provider.d.ts.map +1 -0
- package/dist/providers/rodin-provider.js +236 -0
- package/dist/providers/rodin-provider.js.map +1 -0
- package/dist/providers/scripted-provider.d.ts +141 -0
- package/dist/providers/scripted-provider.d.ts.map +1 -0
- package/dist/providers/scripted-provider.js +246 -0
- package/dist/providers/scripted-provider.js.map +1 -0
- package/dist/providers/together-provider.d.ts +20 -0
- package/dist/providers/together-provider.d.ts.map +1 -0
- package/dist/providers/together-provider.js +56 -0
- package/dist/providers/together-provider.js.map +1 -0
- package/dist/providers/types.d.ts +202 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +2 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/providers/vllm-provider.d.ts +22 -0
- package/dist/providers/vllm-provider.d.ts.map +1 -0
- package/dist/providers/vllm-provider.js +66 -0
- package/dist/providers/vllm-provider.js.map +1 -0
- package/dist/providers/voyage-provider.d.ts +37 -0
- package/dist/providers/voyage-provider.d.ts.map +1 -0
- package/dist/providers/voyage-provider.js +124 -0
- package/dist/providers/voyage-provider.js.map +1 -0
- package/dist/providers/xai-provider.d.ts +24 -0
- package/dist/providers/xai-provider.d.ts.map +1 -0
- package/dist/providers/xai-provider.js +57 -0
- package/dist/providers/xai-provider.js.map +1 -0
- package/dist/python-bridge-types.d.ts +70 -0
- package/dist/python-bridge-types.d.ts.map +1 -0
- package/dist/python-bridge-types.js +2 -0
- package/dist/python-bridge-types.js.map +1 -0
- package/dist/python-node-executor.d.ts +20 -0
- package/dist/python-node-executor.d.ts.map +1 -0
- package/dist/python-node-executor.js +219 -0
- package/dist/python-node-executor.js.map +1 -0
- package/dist/python-stdio-bridge.d.ts +67 -0
- package/dist/python-stdio-bridge.d.ts.map +1 -0
- package/dist/python-stdio-bridge.js +704 -0
- package/dist/python-stdio-bridge.js.map +1 -0
- package/dist/recommended-models.d.ts +17 -0
- package/dist/recommended-models.d.ts.map +1 -0
- package/dist/recommended-models.js +139 -0
- package/dist/recommended-models.js.map +1 -0
- package/dist/telemetry.d.ts +61 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +128 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/trace-exporters.d.ts +72 -0
- package/dist/trace-exporters.d.ts.map +1 -0
- package/dist/trace-exporters.js +216 -0
- package/dist/trace-exporters.js.map +1 -0
- package/dist/tracing-helpers.d.ts +99 -0
- package/dist/tracing-helpers.d.ts.map +1 -0
- package/dist/tracing-helpers.js +217 -0
- package/dist/tracing-helpers.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cohere Provider — exposes Cohere's `/v2/embed` text embedding API through
|
|
3
|
+
* the standard {@link BaseProvider} interface.
|
|
4
|
+
*
|
|
5
|
+
* API docs: https://docs.cohere.com/reference/embed
|
|
6
|
+
*/
|
|
7
|
+
import { BaseProvider } from "./base-provider.js";
|
|
8
|
+
import { createLogger } from "@nodetool-ai/config";
|
|
9
|
+
const log = createLogger("nodetool.runtime.providers.cohere");
|
|
10
|
+
const COHERE_API_BASE_URL = "https://api.cohere.com/v2";
|
|
11
|
+
const COHERE_EMBEDDING_MODELS = [
|
|
12
|
+
{
|
|
13
|
+
id: "embed-v4.0",
|
|
14
|
+
name: "Embed v4.0",
|
|
15
|
+
provider: "cohere",
|
|
16
|
+
dimensions: 1536
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
id: "embed-english-v3.0",
|
|
20
|
+
name: "Embed English v3.0",
|
|
21
|
+
provider: "cohere",
|
|
22
|
+
dimensions: 1024
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
id: "embed-english-light-v3.0",
|
|
26
|
+
name: "Embed English Light v3.0",
|
|
27
|
+
provider: "cohere",
|
|
28
|
+
dimensions: 384
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
id: "embed-multilingual-v3.0",
|
|
32
|
+
name: "Embed Multilingual v3.0",
|
|
33
|
+
provider: "cohere",
|
|
34
|
+
dimensions: 1024
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
id: "embed-multilingual-light-v3.0",
|
|
38
|
+
name: "Embed Multilingual Light v3.0",
|
|
39
|
+
provider: "cohere",
|
|
40
|
+
dimensions: 384
|
|
41
|
+
}
|
|
42
|
+
];
|
|
43
|
+
export class CohereProvider extends BaseProvider {
|
|
44
|
+
static requiredSecrets() {
|
|
45
|
+
return ["COHERE_API_KEY"];
|
|
46
|
+
}
|
|
47
|
+
apiKey;
|
|
48
|
+
_fetch;
|
|
49
|
+
inputType;
|
|
50
|
+
constructor(secrets = {}, options = {}) {
|
|
51
|
+
super("cohere");
|
|
52
|
+
this.apiKey = secrets.COHERE_API_KEY ?? "";
|
|
53
|
+
this._fetch = options.fetchFn ?? globalThis.fetch.bind(globalThis);
|
|
54
|
+
this.inputType = options.inputType ?? "search_document";
|
|
55
|
+
if (!this.apiKey) {
|
|
56
|
+
log.warn("Cohere API key not configured");
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
getContainerEnv() {
|
|
60
|
+
return { COHERE_API_KEY: this.apiKey };
|
|
61
|
+
}
|
|
62
|
+
async generateMessage(_args) {
|
|
63
|
+
throw new Error("cohere provider does not support chat generation");
|
|
64
|
+
}
|
|
65
|
+
async *generateMessages(_args) {
|
|
66
|
+
throw new Error("cohere provider does not support chat generation");
|
|
67
|
+
yield* [];
|
|
68
|
+
}
|
|
69
|
+
async getAvailableEmbeddingModels() {
|
|
70
|
+
return COHERE_EMBEDDING_MODELS;
|
|
71
|
+
}
|
|
72
|
+
async generateEmbedding(args) {
|
|
73
|
+
if (!this.apiKey) {
|
|
74
|
+
throw new Error("COHERE_API_KEY is not configured");
|
|
75
|
+
}
|
|
76
|
+
const texts = Array.isArray(args.text) ? args.text : [args.text];
|
|
77
|
+
if (texts.length === 0 ||
|
|
78
|
+
texts.some((v) => typeof v !== "string" || v.length === 0)) {
|
|
79
|
+
throw new Error("text must not be empty");
|
|
80
|
+
}
|
|
81
|
+
const body = {
|
|
82
|
+
model: args.model || "embed-v4.0",
|
|
83
|
+
texts,
|
|
84
|
+
input_type: this.inputType,
|
|
85
|
+
embedding_types: ["float"]
|
|
86
|
+
};
|
|
87
|
+
if (args.dimensions) {
|
|
88
|
+
body.output_dimension = args.dimensions;
|
|
89
|
+
}
|
|
90
|
+
const response = await this._fetch(`${COHERE_API_BASE_URL}/embed`, {
|
|
91
|
+
method: "POST",
|
|
92
|
+
headers: {
|
|
93
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
94
|
+
"Content-Type": "application/json"
|
|
95
|
+
},
|
|
96
|
+
body: JSON.stringify(body)
|
|
97
|
+
});
|
|
98
|
+
if (!response.ok) {
|
|
99
|
+
const errText = await response.text().catch(() => "");
|
|
100
|
+
throw new Error(`Cohere embedding error ${response.status}: ${errText}`);
|
|
101
|
+
}
|
|
102
|
+
const data = (await response.json());
|
|
103
|
+
// v2 API returns `{ embeddings: { float: [[...]] } }` when
|
|
104
|
+
// `embedding_types: ["float"]` is requested. Older payloads return a bare
|
|
105
|
+
// `number[][]` — handle both for safety.
|
|
106
|
+
if (Array.isArray(data.embeddings)) {
|
|
107
|
+
return data.embeddings;
|
|
108
|
+
}
|
|
109
|
+
const floats = data.embeddings?.float;
|
|
110
|
+
if (!Array.isArray(floats)) {
|
|
111
|
+
throw new Error("Cohere embedding response missing float embeddings");
|
|
112
|
+
}
|
|
113
|
+
return floats;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=cohere-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cohere-provider.js","sourceRoot":"","sources":["../../src/providers/cohere-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized cost calculation for all AI providers.
|
|
3
|
+
*
|
|
4
|
+
* This module provides a unified interface for calculating API costs in credits.
|
|
5
|
+
* 1 credit = $0.01 USD (i.e., 1000 credits = $10 USD)
|
|
6
|
+
* All rates include a 50% premium over provider base costs.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* import { CostCalculator, UsageInfo } from "./cost-calculator.js";
|
|
10
|
+
*
|
|
11
|
+
* // Calculate cost for a chat completion
|
|
12
|
+
* const usage: UsageInfo = { inputTokens: 1000, outputTokens: 500 };
|
|
13
|
+
* const cost = CostCalculator.calculate("gpt-4o-mini", usage, "openai");
|
|
14
|
+
*
|
|
15
|
+
* // Or use convenience helper functions
|
|
16
|
+
* const cost2 = calculateChatCost("gpt-4o-mini", 1000, 500);
|
|
17
|
+
*/
|
|
18
|
+
export declare enum CostType {
|
|
19
|
+
TOKEN_BASED = "token_based",
|
|
20
|
+
EMBEDDING = "embedding",
|
|
21
|
+
CHARACTER_BASED = "character_based",
|
|
22
|
+
DURATION_BASED = "duration_based",
|
|
23
|
+
IMAGE_BASED = "image_based",
|
|
24
|
+
VIDEO_BASED = "video_based",
|
|
25
|
+
/** Flat per-task cost, e.g. 3D generation APIs billed per submitted job. */
|
|
26
|
+
TASK_BASED = "task_based"
|
|
27
|
+
}
|
|
28
|
+
export interface PricingTier {
|
|
29
|
+
costType: CostType;
|
|
30
|
+
inputPer1kTokens?: number;
|
|
31
|
+
outputPer1kTokens?: number;
|
|
32
|
+
cachedPer1kTokens?: number;
|
|
33
|
+
per1kChars?: number;
|
|
34
|
+
perMinute?: number;
|
|
35
|
+
perImage?: number;
|
|
36
|
+
perSecondVideo?: number;
|
|
37
|
+
/** Cost per submitted task (CostType.TASK_BASED). In nodetool credits (1 credit = $0.01). */
|
|
38
|
+
perTask?: number;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Pricing tiers by tier name - derived from Python cost_calculator.py PRICING_TIERS.
|
|
42
|
+
*/
|
|
43
|
+
export declare const PRICING_TIERS: Record<string, PricingTier>;
|
|
44
|
+
/**
|
|
45
|
+
* Model ID to tier mapping.
|
|
46
|
+
* Keys are "provider:modelId" strings for provider-specific pricing.
|
|
47
|
+
*/
|
|
48
|
+
export declare const MODEL_TO_TIER: Record<string, string>;
|
|
49
|
+
export interface UsageInfo {
|
|
50
|
+
inputTokens?: number;
|
|
51
|
+
outputTokens?: number;
|
|
52
|
+
cachedTokens?: number;
|
|
53
|
+
reasoningTokens?: number;
|
|
54
|
+
inputCharacters?: number;
|
|
55
|
+
durationSeconds?: number;
|
|
56
|
+
imageCount?: number;
|
|
57
|
+
videoSeconds?: number;
|
|
58
|
+
/** Number of tasks submitted (for CostType.TASK_BASED providers). */
|
|
59
|
+
taskCount?: number;
|
|
60
|
+
}
|
|
61
|
+
export declare class CostCalculator {
|
|
62
|
+
/**
|
|
63
|
+
* Get the pricing tier for a model ID scoped by provider.
|
|
64
|
+
*
|
|
65
|
+
* @param modelId - The model identifier
|
|
66
|
+
* @param provider - Provider name (e.g., "openai", "anthropic")
|
|
67
|
+
* @returns The pricing tier name, or null if not found
|
|
68
|
+
*/
|
|
69
|
+
static getTier(modelId: string, provider: string): string | null;
|
|
70
|
+
/**
|
|
71
|
+
* Calculate cost in credits for an API call.
|
|
72
|
+
*
|
|
73
|
+
* @param modelId - The model identifier
|
|
74
|
+
* @param usage - Usage information from the API response
|
|
75
|
+
* @param provider - Provider name for pricing lookup
|
|
76
|
+
* @returns Cost in credits (1 credit = $0.01 USD)
|
|
77
|
+
*/
|
|
78
|
+
static calculate(modelId: string, usage: UsageInfo, provider: string): number;
|
|
79
|
+
/**
|
|
80
|
+
* Calculate cost based on tier type.
|
|
81
|
+
*/
|
|
82
|
+
private static _calculateForTier;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Calculate chat completion cost.
|
|
86
|
+
*/
|
|
87
|
+
export declare function calculateChatCost(modelId: string, inputTokens: number, outputTokens: number, cachedTokens?: number, provider?: string): number;
|
|
88
|
+
/**
|
|
89
|
+
* Calculate embedding cost.
|
|
90
|
+
*/
|
|
91
|
+
export declare function calculateEmbeddingCost(modelId: string, inputTokens: number, provider?: string): number;
|
|
92
|
+
/**
|
|
93
|
+
* Calculate TTS cost.
|
|
94
|
+
*/
|
|
95
|
+
export declare function calculateSpeechCost(modelId: string, inputChars: number, provider?: string): number;
|
|
96
|
+
/**
|
|
97
|
+
* Calculate ASR/Whisper cost.
|
|
98
|
+
*/
|
|
99
|
+
export declare function calculateWhisperCost(modelId: string, durationSeconds: number, provider?: string): number;
|
|
100
|
+
/**
|
|
101
|
+
* Calculate 3D model generation cost.
|
|
102
|
+
* Pass `taskCount` > 1 only if multiple tasks were submitted (rare).
|
|
103
|
+
*/
|
|
104
|
+
export declare function calculateModel3DCost(modelId: string, provider: string, taskCount?: number): number;
|
|
105
|
+
/**
|
|
106
|
+
* Calculate image generation cost.
|
|
107
|
+
*/
|
|
108
|
+
export declare function calculateImageCost(modelId: string, imageCount?: number, quality?: string, provider?: string): number;
|
|
109
|
+
//# sourceMappingURL=cost-calculator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-calculator.d.ts","sourceRoot":"","sources":["../../src/providers/cost-calculator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,oBAAY,QAAQ;IAClB,WAAW,gBAAgB;IAC3B,SAAS,cAAc;IACvB,eAAe,oBAAoB;IACnC,cAAc,mBAAmB;IACjC,WAAW,gBAAgB;IAC3B,WAAW,gBAAgB;IAC3B,4EAA4E;IAC5E,UAAU,eAAe;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6FAA6F;IAC7F,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAgMrD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAsFhD,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD,qBAAa,cAAc;IACzB;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAgChE;;;;;;;OAOG;IACH,MAAM,CAAC,SAAS,CACd,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,MAAM,GACf,MAAM;IAkBT;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;CA6CjC;AAID;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,YAAY,GAAE,MAAU,EACxB,QAAQ,GAAE,MAAiB,GAC1B,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,QAAQ,GAAE,MAAiB,GAC1B,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,MAAiB,GAC1B,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,EACvB,QAAQ,GAAE,MAAiB,GAC1B,MAAM,CAGR;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,MAAU,GACpB,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,MAAU,EACtB,OAAO,GAAE,MAAiB,EAC1B,QAAQ,GAAE,MAAiB,GAC1B,MAAM,CAkBR"}
|