@indigo-labs/indigo-sdk
Version:
Indigo SDK for interacting with Indigo endpoints via lucid-evolution
81 lines (76 loc) • 2.38 kB
text/typescript
/**
* Test endpoint for protocol initialization.
* Re-exports from the initialize contract and provides a test-friendly init() wrapper
* that uses protocolParamsMock and optional initPyth when pythConfig is not provided.
*/
import type { LucidEvolution } from '@lucid-evolution/lucid';
import type { ScriptCredential } from '../../src';
import type { ProtocolParams } from '../../src/contracts/gov/types-new';
import {
init as initContract,
initPythConfig,
} from '../../src/contracts/initialize/actions';
import {
mintOneTimeToken,
DEFAULT_INIT_OPTIONS,
} from '../../src/contracts/initialize/helpers';
import type {
AssetInfo,
CollateralAssetInfo,
InitialAssetParam,
InitializeOptions,
} from '../../src/contracts/initialize/types';
import { protocolParamsMock } from '../mock/protocol-params-mock';
import { AssetClass } from '@3rd-eye-labs/cardano-offchain-common';
export type {
AssetInfo,
CollateralAssetInfo,
InitialAssetParam,
InitializeOptions,
};
export { initPythConfig, mintOneTimeToken, DEFAULT_INIT_OPTIONS };
/**
* Initialize the protocol (test helper).
* Uses protocolParamsMock merged with overrideProtocolParams.
* If pythConfig is not provided, initializes Pyth via initPyth + initPythConfig.
* Uses DEFAULT_INIT_OPTIONS when initOptions is not provided.
*/
export async function init(
lucid: LucidEvolution,
defaultInitialAssets: InitialAssetParam[],
currentSlot: number,
mkPythBasedAssets: (
pythStateNft: AssetClass,
) => InitialAssetParam[] = () => [],
overrideProtocolParams: Partial<ProtocolParams> = {},
initOptions: InitializeOptions = DEFAULT_INIT_OPTIONS,
spStakingCred: ScriptCredential = {
tag: 'StakingHash',
contents: {
tag: 'ScriptCredential',
contents: 'b8358aadd30c60eba168608ad5e875592e9b7cb8c700827cde87f9a3',
},
},
treasuryStakingCred: ScriptCredential = {
tag: 'StakingHash',
contents: {
tag: 'ScriptCredential',
contents: 'b8358aadd30c60eba168608ad5e875592e9b7cb8c700827cde87f9a3',
},
},
): Promise<ReturnType<typeof initContract>> {
const protocolParams: ProtocolParams = {
...protocolParamsMock,
...overrideProtocolParams,
};
return initContract(
lucid,
defaultInitialAssets,
currentSlot,
mkPythBasedAssets,
protocolParams,
initOptions,
spStakingCred,
treasuryStakingCred,
);
}