@bsv/wallet-toolbox-client
Version:
Client only Wallet Storage
95 lines • 3.43 kB
TypeScript
import { StorageFeeModel } from '../../sdk/WalletStorage.interfaces';
/**
* An output of this satoshis amount will be adjusted to the largest fundable amount.
*/
export declare const maxPossibleSatoshis = 2099999999999999;
export interface GenerateChangeSdkResult {
allocatedChangeInputs: GenerateChangeSdkChangeInput[];
changeOutputs: GenerateChangeSdkChangeOutput[];
size: number;
fee: number;
satsPerKb: number;
maxPossibleSatoshisAdjustment?: {
fixedOutputIndex: number;
satoshis: number;
};
}
/**
* Simplifications:
* - only support one change type with fixed length scripts.
* - only support satsPerKb fee model.
*
* Confirms for each availbleChange output that it remains available as they are allocated and selects alternate if not.
*
* @param params
* @returns
*/
export declare function generateChangeSdk(params: GenerateChangeSdkParams, allocateChangeInput: (targetSatoshis: number, exactSatoshis?: number) => Promise<GenerateChangeSdkChangeInput | undefined>, releaseChangeInput: (outputId: number) => Promise<void>): Promise<GenerateChangeSdkResult>;
export declare function validateGenerateChangeSdkResult(params: GenerateChangeSdkParams, r: GenerateChangeSdkResult): {
ok: boolean;
log: string;
};
export interface GenerateChangeSdkParams {
fixedInputs: GenerateChangeSdkInput[];
fixedOutputs: GenerateChangeSdkOutput[];
feeModel: StorageFeeModel;
/**
* Target for number of new change outputs added minus number of funding change outputs consumed.
* If undefined, only a single change output will be added if excess fees must be recaptured.
*/
targetNetCount?: number;
/**
* Satoshi amount to initialize optional new change outputs.
*/
changeInitialSatoshis: number;
/**
* Lowest amount value to assign to a change output.
* Drop the output if unable to satisfy.
* default 285
*/
changeFirstSatoshis: number;
/**
* Fixed change locking script length.
*
* For P2PKH template, 25 bytes
*/
changeLockingScriptLength: number;
/**
* Fixed change unlocking script length.
*
* For P2PKH template, 107 bytes
*/
changeUnlockingScriptLength: number;
randomVals?: number[];
noLogging?: boolean;
log?: string;
}
export interface GenerateChangeSdkInput {
satoshis: number;
unlockingScriptLength: number;
}
export interface GenerateChangeSdkOutput {
satoshis: number;
lockingScriptLength: number;
}
export interface GenerateChangeSdkChangeInput {
outputId: number;
satoshis: number;
}
export interface GenerateChangeSdkChangeOutput {
satoshis: number;
lockingScriptLength: number;
}
export interface ValidateGenerateChangeSdkParamsResult {
hasMaxPossibleOutput?: number;
}
export declare function validateGenerateChangeSdkParams(params: GenerateChangeSdkParams): ValidateGenerateChangeSdkParamsResult;
export interface GenerateChangeSdkStorageChange extends GenerateChangeSdkChangeInput {
spendable: boolean;
}
export declare function generateChangeSdkMakeStorage(availableChange: GenerateChangeSdkChangeInput[]): {
allocateChangeInput: (targetSatoshis: number, exactSatoshis?: number) => Promise<GenerateChangeSdkChangeInput | undefined>;
releaseChangeInput: (outputId: number) => Promise<void>;
getLog: () => string;
};
//# sourceMappingURL=generateChange.d.ts.map