import type * as Db from '../../db/Db.js'; import * as RoutesDepositAddresses from '../../db/tables/routesDepositAddresses.js'; import * as RoutesDeposits from '../../db/tables/routesDeposits.js'; import * as RoutesTransfers from '../../db/tables/routesTransfers.js'; import type * as Metrics from '../../Metrics.js'; import * as Economics from './Economics.js'; import * as Provider from './Provider.js'; /** One completed route lifecycle stage used for retrospective history. */ export type LifecycleInterval = { /** UTC time when the stage ended. */ endedAt: string; /** API-key environment that owns the route journey. */ routesEnvironment: 'production' | 'sandbox'; /** Route method used by the journey. */ method: 'deposit_address' | 'transaction'; /** Route provider that owns the journey. */ provider: string; /** Stable route resource id. */ resourceId: string; /** Completed lifecycle stage. */ stage: 'source_routes'; /** UTC time when the stage began. */ startedAt: string; }; /** Returns the source-routes interval completed by an address's first verified deposit. */ export declare function depositAddressSourceRoutesInterval(options: depositAddressSourceRoutesInterval.Options): LifecycleInterval; export declare namespace depositAddressSourceRoutesInterval { /** Address and first verified provider request. */ type Options = { /** Reusable deposit address whose first route journey advanced. */ address: RoutesDepositAddresses.Record; /** Provider request that first reported source funds. */ request: Provider.listDepositAddressRequests.ReturnType['requests'][number]; }; } /** Records a committed deposit transition and its completed lifecycle segments. */ export declare function recordDeposit(metrics: Metrics.Metrics | undefined, options: recordDeposit.Options): void; export declare namespace recordDeposit { /** Committed deposit transition. */ type Options = { /** Record before the transition, absent for first detection. */ previous?: RoutesDeposits.Record | undefined; /** Whether complete provider delivery evidence informed this transition. */ providerEvidenceComplete?: boolean | undefined; /** Committed deposit record. */ record: RoutesDeposits.Record; }; } /** Records a committed deposit-address transition. */ export declare function recordDepositAddress(metrics: Metrics.Metrics | undefined, options: recordDepositAddress.Options): void; export declare namespace recordDepositAddress { /** Committed deposit-address transition. */ type Options = { /** Record before the transition, absent for creation. */ previous?: RoutesDepositAddresses.Record | undefined; /** Committed deposit-address record. */ record: RoutesDepositAddresses.Record; }; } /** Records a bounded deposit-address cap rejection. */ export declare function recordDepositAddressLimitRejection(metrics: Metrics.Metrics | undefined, options: recordDepositAddressLimitRejection.Options): void; export declare namespace recordDepositAddressLimitRejection { /** Bounded dimensions for one rejected address creation. */ type Options = { /** API-key environment whose request was rejected. */ routesEnvironment: 'production' | 'sandbox'; }; } /** Records a bounded creation-time Routes subsidy rejection. */ export declare function recordSubsidyRejection(metrics: Metrics.Metrics | undefined, options: recordSubsidyRejection.Options): void; export declare namespace recordSubsidyRejection { /** Bounded dimensions for one rejected subsidy request. */ type Options = { /** Public reason returned to the caller. */ reason: 'billing_past_due' | 'billing_required' | 'routes_subsidy_not_enabled'; /** API-key environment whose request was rejected. */ routesEnvironment: 'production' | 'sandbox'; }; } /** Records a committed transfer transition and its completed lifecycle segments. */ export declare function recordTransfer(metrics: Metrics.Metrics | undefined, options: recordTransfer.Options): void; export declare namespace recordTransfer { /** Committed transfer transition. */ type Options = { /** Record before the transition, absent for creation. */ previous?: RoutesTransfers.Record | undefined; /** Committed transfer record. */ record: RoutesTransfers.Record; /** Automatic selection comparison retained only while creating the transfer. */ selection?: recordRouteQuote.Options['selection'] | undefined; }; } /** Records customer economics for one selected route quote. */ export declare function recordRouteQuote(metrics: Metrics.Metrics | undefined, options: recordRouteQuote.Options): void; export declare namespace recordRouteQuote { /** Selected quote and its bounded corridor dimensions. */ type Options = { /** Selected expected destination amount. */ destinationAmount?: Economics.Amount | undefined; /** Destination chain selected for the route. */ destinationChain: Pick; /** Destination token selected for the route. */ destinationToken: Pick; /** Party responsible for the provider fees. */ feePayer: 'customer' | 'tempo'; /** Provider fees included in the selected quote. */ fees: readonly { /** Fee amount in the charged token. */ amount: Economics.Amount; /** Stable key for the charged token. */ token: Pick; }[]; /** API-key environment that owns the route. */ routesEnvironment: 'production' | 'sandbox'; /** Route method selected by the caller. */ method: 'deposit_address' | 'transaction'; /** Provider selected for the route. */ provider: Pick; /** Automatic selection comparison, omitted for provider-forced requests. */ selection?: Selection | undefined; /** Requested source amount. */ sourceAmount: Economics.Amount; /** Source chain selected for the route. */ sourceChain: Pick; /** Source token selected for the route. */ sourceToken: Pick; }; /** Automatic route-selection comparison. */ type Selection = { /** Highest expected destination amount returned by successful candidates. */ bestDestinationAmount: string; }; } /** Returns the source-routes interval completed by initial source registration. */ export declare function transferSourceRoutesInterval(options: transferSourceRoutesInterval.Options): LifecycleInterval | undefined; export declare namespace transferSourceRoutesInterval { /** Transfer whose initial source registration has completed. */ type Options = { /** Registered transfer at the start of provider processing. */ record: RoutesTransfers.Record; }; } /** Queries active durable routes state and emits zero-filled gauges. */ export declare function recordState(db: Db.Db, options: recordState.Options): Promise; export declare namespace recordState { /** Durable routes state snapshot dependencies. */ type Options = { /** Bounded operational metrics backend. */ metrics: Metrics.Metrics; /** Route providers configured by the host application. */ providers: readonly Provider.Provider[]; }; } //# sourceMappingURL=Observability.d.ts.map